假设我想看看以下表达式在if
语句中如何工作
[ `ps -p 4800 -o comm=` == "ssh-agent" ]
但我不想为此编写特殊的脚本。我可以在实时 shell 中计算和/或执行此语句以查看它返回哪个布尔值吗?
如果我把它放入命令行,它会发誓。
$ [ `ps -p 4800 -o comm=` = "ssh-agent" ]
-bash: [: =: unary operator expected
$ [ `ps -p 4800 -o comm=` == "ssh-agent" ]
-bash: [: ==: unary operator expected
答案1
如果ps
不返回任何内容,第一个字符串就会消失并且[
只看到两个参数。使用双引号来修复它。
[ "`ps -p 4800 -o comm=`" = ssh-agent ]
echo $?
$?
如果条件返回 true,则为 0。
顺便说一句,您不需要双引号,ssh-agent
因为它的字符都不是特殊的。