シェルスクリプトで、コマンドのオプションを扱う
意外とわからなかったので、メモしておく。
例えばpythonを起動するスクリプトを書くとき
#!/bin/sh
python
とか書けば、シェルからファイル名を叩けば一応起動はするけど、オプションを指定して実行することはできない。
例えば
$ ./test.sh -a
みたいに。
そのように、シェルスクリプトをオプションつけてスクリプトを実行させたい時の対策メモ。
結論から書けば、
#!/bin/sh python "$@"
と書くと、オプションの構成を変えることなく起動可能。
"" でくくるのは、その中の引数がそのまま入力されるから。
ただし、"$*"の場合オプションを一つとしてまとめて渡してしまうことがあるので、注意が必要。
つまり、くくったときの動作として
という違いがある?んだと思う。間違ってたらごめん。
ちなみに指定するオプションをくくるメリットは、スペースがオプションに反映されること。