如果在shell中出现条件问题

时间:2009-11-28 22:17:45

标签: unix conditional-statements

我正在尝试检测字符串是否包含破折号,但似乎没有任何东西适合我(我是shell的新手)。

if [ "$m" -eq "-" ]
then
echo "has dash"
else
echo "has no dash"
fi

3 个答案:

答案 0 :(得分:4)

-eq用于测试整数的相等性。要测试字符串相等性,请改用=

if [ "$m" = - ]

有关详细信息,请参阅test的手册页。

答案 1 :(得分:2)

if [ "x$m" = "x-" ]; then
    echo "is a dash"
else
    echo "is not a dash"
fi

如果[$m开头,则使用字符串比较,引用所有内容并避免可能的-命令行切换混淆(在某些非Posix shell上)。

答案 2 :(得分:1)

'-eq'运算符执行算术比较。您需要使用'='运算符。即:

如果测试“$ m”=' - ';然后     回声“是一个破折号”; 其他     回声“没有冲刺”; 网络