繁体   English   中英

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

[英]bash: execute a semicolon separated list of commands as variable

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

# 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

暂无
暂无

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

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