多数のコマンド ライン引数 (おそらくスペースを含む) を受け取り、それらすべてをログイン シェル経由でプログラム (/bin/some_program) に渡す bash スクリプトを作成しています。bash スクリプトから呼び出されるログイン シェルは、ユーザーのログイン シェルによって異なります。この例では、ユーザーがログイン シェルとして /bin/bash を使用しているとしますが、それは /bin/tcsh などである可能性があります。
some_program に渡される引数の数がわかっている場合は、bash スクリプトに次の行を追加できます。
#!/bin/bash
# ... (some lines where we determine that the user's login shell is bash) ...
/bin/bash --login -c "/bin/some_program \"$1\" \"$2\""
次に、上記のスクリプトを次のように呼び出します。
my_script "this is too" cool
上記の例では、some_program が「これも」と「クール」の 2 つの引数を受け取ることが確認できます。
私の質問は...いくつの引数が渡されるかわからない場合はどうなりますか? my_script に送信されたすべての引数を some_program に渡したいと思います。問題は、これを行う方法がわからないことです。動作しないものを次に示します。
/bin/bash --login -c "/bin/some_program $@" # --> 3 arguments: "this","is","too"
/bin/bash --login -c /bin/some_program "$@" # --> passes no arguments