ここは僕の冷蔵庫。後はあれして食べるだけ。

I love the frozen FOOD.

phpでいえばexplodeしたいって話です。
前回のshellで置換の話の話じゃないですが、shellでもその手のことが出来るって話です。
ためしにやってみました。
test.shってファイル名で書きのものを用意しました。

#/bin/bash
line="01 02 03 *"
set -f
set -- $line
part1=$1
part2=$2
part3=$3
part4=$4

echo $part1
echo $part2
echo $part3
echo $part4

sh test.sh
を実行すると、見事に

01
02
03
*

と出力されます。

気を付けたいこと

上記サンプルはsetを利用して空白単位に文字列を分けています。
が、あれなんですって。
setって、コマンド引数を指定しなおすってことをする処理らしいです。
ですので、$1とか$2で引数が取得できている感じ。
ただし、ここでも分かる通り、setはコマンド引数を指定しなおしちゃうわけです。
つまり、

sh test.sh ABCD

としたら、元の引数はおじゃんになります。

ですので、下記のような小細工をしとくといいかもです。

#/bin/bash
exec_argv=$@

line="01 02 03 *"
set -f
set -- $line
part1=$1
part2=$2
part3=$3
part4=$4

echo $part1
echo $part2
echo $part3
echo $part4

echo $exec_argv

単純な話で、バックアップしとけってことですけども(笑)

参考


http://shellscript.sunone.me/parameter.html

参考

参考記事