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