linux - 在 Bash CGI 中的同一变量中运行两个命令

标签 linux bash get cgi

在我的 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/

相关文章:

android - Ionic AngularJS 在 ubuntu 上构建 android

linux - 如何使用 vimdiff 仅重定向两个文件之间的差异

windows - 为什么 GIT 在从 bash 命令提示符运行时不使用 core.editor 和 commit.template 配置值?

javascript - Ajax 充当 GET 方法,即使是 POST 方法

encoding - httpgetrequest uri 编码为 iso-8859-2

linux - 搜索 HTM 文件并在第一行添加

linux - 如何与乘法增量并行运行

linux - 替换 bash 中的字符串

python - 将时间转换为人类可读格式的 Shell 脚本或 Python 脚本

php - 通过 URL 传递多个变量并在下一页读取所有变量