初学者bash:如何在字符串比较测试中使用echo的输出



我想做的是获得echo的输出,然后进行字符串比较。示例:

var=echo "Some string"
if [ var = "* string" ]
then
echo true
else
echo false
fi

这是另一个尝试:

if [ (echo "Some string") = "* string" ]
then
echo true
else
echo false
fi

什么都不管用。

您可以使用命令替换:

var=$(echo "Some string")
if [ "$var" = "* string" ]

或:

if [ "$(echo "Some string")" = "* string" ]

注意我添加的双引号。它们很重要,因为否则Bash会把东西分成多个单词;[ Some string = "* string" ]将不起作用。出于这个原因,以及其他相关原因,我建议使用[[ ]]而不是[ ],后者对此不太严格:

if [[ $(echo "Some string") = "* string" ]]

尽管这听起来像是你想要的:

if [[ $(echo "Some string") == *" string" ]]

这将执行模式匹配,而不是比较精确相等的字符串。

try:

if [ `echo "Some string"` = "* string" ]; then
(other commands)
fi

或者可替换地,

if [ $(echo "Some string") = "* string" ]; then
(other commands)
fi

请注意,then关键字之前还需要一个分号

最新更新