シェル スクリプトで完全なコマンド ライン呼び出しにアクセスできるかどうか疑問に思っています。スクリプトでは、さらに渡す必要があります。$@ および $* アクセサーがあることがわかりましたが、すべての文字が渡されるわけではありません。たとえば、コマンド ラインに次のように記述すると、
$ my_script xyz -m "something here"
スクリプトでは次のようにコマンド ライン引数にアクセスします。
引数="$*"
$引数をエコーする
出力は次のようになりますxyz -m something here
。残念ながら引用符が削除されましたが、そのままにしておくことはできますか? 次に、これらの引数を別のスクリプトに渡したいのですが、引数がいくつあるか、また行のどの位置に引用符があるかはわかりません。
答え1
実際に問題を解決する前に、最初のスクリプトで上記のように 2 番目のスクリプトを実行しますが、実際には最初のスクリプトでは以下を使用する必要があります。
second_script "$@"
2 番目のスクリプトを実行すると、期待どおりに動作するようになりました。関連するのは $@ を囲む引用符です。