在我的 Bash CGI 脚本中,我采用作为 GET 参数传递的命令并执行它。这可能是:
CMD='ls -al'
$CMD
它运行良好并产生预期的输出。但是如果我尝试传递两个命令
CMD='ls -al; echo hello'
$CMD
或
CMD='ls -al && echo hello'
$CMD
两个命令都没有执行。
如何从 bash CGI 中的同一行/变量运行多个命令?
最佳答案
您可以使用 bash
将变量作为 bash 代码执行:
# UNSAFE, DO NOT USE
cmd='ls -al; echo hello'
bash -c "$cmd"
或者,根据您要运行它的上下文,您可以使用 eval "$cmd"
来运行它,就好像它是您自己脚本中的一行,而不是执行一段单独的 shell 代码:
# UNSAFE, DO NOT USE
cmd='ls -al; echo hello'
eval "$cmd"
这两种方法都会对安全性和正确性产生严重影响,因此我觉得必须添加警告以防止它们被断章取义地复制。
对于专门用于运行不安全用户输入的远程 shell 或 root 工具包,您可以忽略警告。
关于linux - 在 Bash CGI 中的同一变量中运行两个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28310720/