シェルスクリプトの引数をそのまま渡す
シェルスクリプトの引数をそのままコマンドに渡す場合には、"$@"を使うと便利です。こんな感じで試験用のスクリプトを用意して、
ファイル: a.sh
#!/bin/sh ruby -e 'p ARGV' $* ruby -e 'p ARGV' "$*" ruby -e 'p ARGV' "$@"
以下のように実行してみます。
$ ./a.sh 1 2 3 ["1", "2", "3"] ["1 2 3"] ["1", "2", "3"] $ ./a.sh '1 2' 3 ["1", "2", "3"] ["1 2 3"] ["1 2", "3"]
"$@"の場合は、スペースが含まれた引数もそのままコマンドに渡されていることがわかります。