
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
Gem-one(ジェムワン) 権蔵
Gem-one代表.システム開発業ブランドGem-one adIT、音楽レッスン事業 Gem-one Music設立。ビリヤード・スケジュールサイト すけどんも絶賛運用中。
■ブログ
ちょろっとお時間頂戴