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

时间:2015-02-03 23:25:24

标签: 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中从同一行/变量运行多个命令?

1 个答案:

答案 0 :(得分:0)

您可以使用bash执行变量作为bash代码:

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

或者,根据您要运行它的上下文,您可以使用eval "$cmd"来运行它,就好像它是您自己脚本中的一行,而不是要执行的单独的shell代码: / p>

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

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

对于专门用于运行不安全用户输入的远程shell或root工具包,您可以忽略警告。