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

时间:2012-03-16 20:22:35

标签: linux bash

我要做的是获取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

没有任何作用。

2 个答案:

答案 0 :(得分:3)

您可以使用命令替换:

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" ]]

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

答案 1 :(得分:0)

尝试:

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

或者,

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

请注意,您需要在 then关键字之前使用分号