如何仅在命令行中计算/检查 bash 比较表达式?

如何仅在命令行中计算/检查 bash 比较表达式?

假设我想看看以下表达式在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因为它的字符都不是特殊的。

相关内容