この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
。