Shell脚本错误:"[:参数太多"

Chi*_*rag -3 linux bash shell

我正在编写一个小脚本,我必须检查特定进程是否正在运行?然后根据我必须采取行动.是的shell是bash.

要检查进程是否正在运行?从这我试过,

 Process_Num='ps -ef | grep /opt/sro/bin/srocmsd | grep -v "grep" | wc -l'
 if [ $Process_Num -eq 1 ]
 then
      ***Do Stuff***
 else
      ***Do Stuff***
 fi
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

**Error  : line 191: [: too many arguments**
Run Code Online (Sandbox Code Playgroud)

在shell/terminal上直接运行相同的命令时,输出为1.

有语法错误吗?可以帮助吗?

kos*_*tya 5

要将命令执行的结果放在环境变量中,您应该将命令放在反引号(`)中或使用$(command)语法:

 Process_Num=$(ps -ef | grep /opt/sro/bin/srocmsd | grep -v "grep" | wc -l)
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,你链接的问题的答案给出了完全相同的建议;) (3认同)