Bash 命令注入

Bash 命令注入

看一下这个 bash 脚本 ( test.sh):

echo "START"
echo $1
echo "END"

这是我启动脚本的方式:

./test.sh `ls`

我想了解的是ls命令何时执行。

你认为ls被执行了吗 test.sh调用,或者您认为lstest.sh在第 2 行的脚本内执行的。

我想要做的是确保ls呼叫在内部触发test.sh。我怎样才能做到这一点 ?

答案1

ls之前运行过test.sh。它是作为命令替换的结果运行的,这是以下之一单词扩展shell 执行的目的是构造提供给命令的最终参数集(test.sh在本例中);它们必须全部完成才能运行命令。

如果您想给出test.sh一个应自行运行的命令,请跳过命令替换。改成test.sh

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

并使用 来调用它./test.sh ls

相关内容