実際のところ
$ foobar () { printf $1; shift; printf "_"$1; }
$ foobar 12 34 12_34
応用例:パラメータの読み込み
shiftをつかうとオプション値の順次読み込みのような動作を実現できます。
#!/bin/bash declare color=null declare value=0 until (($#==0)); do case $1 in -c|-color) color=$2; shift;; -v|-value) value=$2; shift;; esac shift done printf "color %s, value. %s\r\n" $color $value
動かすと、以下のようにパラメータを入れ替えても空でも動いてくれます。便利。
$ bash foobar.bash -v 12 -c red color red, value. 12
$ bash foobar.bash -c blue -v 46 color blue, value. 46
$ bash foobar.bash -color white -v 1234 color white, value. 1234
$ bash foobar.bash -c yellow color yellow, value. 0