シェルスクリプトの行引数へのアクセス

シェルスクリプトの行引数へのアクセス

シェル スクリプトで完全なコマンド ライン呼び出しにアクセスできるかどうか疑問に思っています。スクリプトでは、さらに渡す必要があります。$@ および $* アクセサーがあることがわかりましたが、すべての文字が渡されるわけではありません。たとえば、コマンド ラインに次のように記述すると、 $ my_script xyz -m "something here" スクリプトでは次のようにコマンド ライン引数にアクセスします。

引数="$*"

$引数をエコーする

出力は次のようになりますxyz -m something here。残念ながら引用符が削除されましたが、そのままにしておくことはできますか? 次に、これらの引数を別のスクリプトに渡したいのですが、引数がいくつあるか、また行のどの位置に引用符があるかはわかりません。

答え1

実際に問題を解決する前に、最初のスクリプトで上記のように 2 番目のスクリプトを実行しますが、実際には最初のスクリプトでは以下を使用する必要があります。

second_script "$@"

2 番目のスクリプトを実行すると、期待どおりに動作するようになりました。関連するのは $@ を囲む引用符です。

関連情報