/bin/sh -c に引数を渡す問題

/bin/sh -c に引数を渡す問題

/bin/sh -c日付パラメータを使用して.shスクリプトを実行しようとしています。 -cオプションは私たちのチームが使用するフレームワークなので、オプションではありません。日付エポックパラメータを私のスクリプトに正しく渡すことはできません。次の例では、ファイルを呼び出すとパラメータが機能しなくなり、コマンドを直接渡すと正しく機能する方法が示されています。途中のコマンド(-cを除く)は、繰り返される各数値の推定出力です。

root:xxxxx@xxxx:/opt/xxxxxx/software_versions> /bin/sh -c /opt/xxxxxx/software_versions/test2.sh 1 2 3 4
1
2
3
4
root:xxxxx@xxxx:/opt/xxxxxx/software_versions> /bin/sh  /opt/xxxxxx/software_versions/test2.sh 1 2 3 4
11
22
33
44
root:xxxxx@xxxxx:/opt/xxxxxx/software_versions> /bin/sh -c 'echo $1 echo $2' a b c d
b echo c

スクリプト内容:

echo 1$1
echo 2$2
echo 3$3
echo 4$4

ベストアンサー1

呼ぶと

software_versions> /bin/sh -c "/opt/xxxxxx/software_versions/test2.sh 1 2 3 4"

-c を使用すると、サブシェルを呼び出してそれに応じたコマンドを実行できます。追加のパラメータは予測可能な方法でサブシェルに渡されません。文字列全体をパラメータとして送信すると、この問題を解決できます。

おすすめ記事