繁体   English   中英

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

[英]Running two commands in same variable in Bash 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"来运行它,就好像它是您自己的脚本中的一行一样,而不是单独执行的一部分外壳代码:

# UNSAFE, DO NOT USE
cmd='ls -al; echo hello'
eval "$cmd"

这两种方法都对安全性和正确性产生了严重影响,因此我觉得我必须添加警告以防止它们被复制到上下文之外。

对于专门用于运行不安全用户输入的远程Shell或root套件,您可以忽略警告。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM