Bash:String包含连字符

时间:2013-11-22 10:58:08

标签: string bash contains hyphen

我试图看看string1是否包含另一个string2。我是这样做的:

a=$(tempfile)
echo "eafg" > $a

if [[ $a == *e* ]]
then
   echo "contains"
fi

现在我尝试查看字符串是否包含连字符:

a=$(tempfile)    
echo "22:00:00-02:00" > $a

if [ $a == *-* ]
then
   echo "contains"
fi

它不起作用。我也尝试过:

if [ $a == *--* ]
if [ $a == *---* ]
if [[ $a == *-* ]]
if [[ $a == *--* ]]
if [[ $a == *---* ]]

没有成功......

提前致谢

2 个答案:

答案 0 :(得分:7)

以下代码会带来问题

a=$(tempfile)    
echo "22:00:00-02:00" > $a

在这里,您要写入文件 $a,然后尝试进行字符串比较。


尝试以下

a="22:00:00-02:00"

if [[ $a == *-* ]]
then
   echo "contains"
fi

答案 1 :(得分:1)

您将字符串重定向到文件,因此在比较时从文件中读取

变量a包含文件的名称,而不包含内容。

说:

if [ $(<$a) == *-* ];
then
   echo "contains"
fi

以下

if [[ $a == *e* ]];
then
   echo "contains"
fi

为你工作,因为保存文件名的变量包含字母e