bash:执行一个以分号分隔的命令列表作为变量



在bash脚本中,我将几个命令作为分号分隔的列表放入变量中。当试图通过调用变量来执行命令时,分号似乎不会被视为不同命令的分隔符,而是被视为kill命令的参数:

# RESTARTCOMMAND="kill `ps -ef | awk '/[s]omebinary/ {print $2}'`; sleep 3; /bath/to/somebinary"
# echo $RESTARTCOMMAND
kill 23396566; sleep 3; /bath/to/somebinary
# $RESTARTCOMMAND
bash: kill: 23396566;: arguments must be process or job IDs
bash: kill: sleep: arguments must be process or job IDs
bash: kill: 3;: arguments must be process or job IDs
bash: kill: /bath/to/somebinary: arguments must be process or job IDs

为什么会发生这种情况,我该如何避免?我尝试引用或转义都没有成功。。。

在这种情况下,您应该使用eval命令。尝试以下操作:

eval $RESTARTCOMMAND

最新更新