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

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://sechiro.hatenablog.com/entry/2015/01/25/%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AE%E4%B8%AD%E3%81%A7%E5%A4%89%E6%95%B0%E3%82%92%E5%88%86%E5%89%B2%E3%81%99%E3%82%8B%E9%9A%9B%E3%81%AB%E3%81%AF%E3%80%81cut
http://shellscript.sunone.me/parameter.html

参考

参考記事