看一下这个 bash 脚本 ( test.sh
):
echo "START"
echo $1
echo "END"
这是我启动脚本的方式:
./test.sh `ls`
我想了解的是ls
命令何时执行。
你认为ls
被执行了吗前 test.sh
调用,或者您认为ls
是test.sh
在第 2 行的脚本内执行的。
我想要做的是确保ls
呼叫在内部触发test.sh
。我怎样才能做到这一点 ?
答案1
ls
之前运行过test.sh
。它是作为命令替换的结果运行的,这是以下之一单词扩展shell 执行的目的是构造提供给命令的最终参数集(test.sh
在本例中);它们必须全部完成才能运行命令。
如果您想给出test.sh
一个应自行运行的命令,请跳过命令替换。改成test.sh
echo "START"
"$1"
echo "END"
并使用 来调用它./test.sh ls
。