シェルスクリプトで引数をスライスして別のコマンドに渡す
以下の例ではfというシェル関数に「foo bar "sp sp sp" -- baz」という引数を与えて
「--」までの引数、つまり「foo」「bar」「sp sp sp」をgというシェル関数に渡している。
渡したい引数のそれぞれをクオートしてevalとともに関数を呼び出せば
空白を含む引数を渡されてもちゃんと動作する。
g() { for i in "$@"; do echo $i done # output: # foo # bar # sp sp sp } f() { g_args= while [ $# -ne 0 ]; do if [ "$1" = '--' ]; then shift break fi if [ -z "$g_args" ]; then g_args="'$1'" else g_args="$g_args '$1'" fi shift done eval "g $g_args" } f foo bar "sp sp sp" -- baz
検索用
配列