Bashコマンドの注入

Bashコマンドの注入

このbashスクリプト()を見てくださいtest.sh

echo "START"
echo $1
echo "END"

これがスクリプトを起動する方法です。

./test.sh `ls`

私が理解したいのは、lsコマンドが実行されるときです。

ls実行されたと思いますか?今後 test.sh呼び出されるか、行 2 のスクリプト内で実行されているlsと思います。test.sh

私が望むのは、ls呼び出しが内部的にトリガーされることを確認することですtest.sh。どうすればいいですか?

ベストアンサー1

ls以前に実行されましたtest.sh。これは、次のいずれかであるコマンド置換の結果として実行されます。単語拡張シェル実行の目的は、コマンドに提供される最後の引数のセットを構成することです(test.shこの場合は、コマンドを実行する前にすべてを完了する必要があります)。

test.sh独自に実行する必要があるコマンドを提供するには、コマンドの置き換えをスキップしてください。test.shに変更

echo "START"
"$1"
echo "END"

を使用して呼び出します./test.sh ls

おすすめ記事