Bash: строка содержит дефис

Я пытаюсь увидеть, содержит ли string1 другую string2. Я делаю это следующим образом:--4-->

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 ответов


следующий фрагмент кода приносит проблемы

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

вот вы пишете в $a а затем попробуйте сделать строка сравнение.


попробовать следующие

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

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

вы перенаправили строку на , так что читать его из файла при сравнении.

переменная a содержит имя файла, а не содержание.

говорят:

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

следующее

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

работал для вас, потому что переменная, содержащая имя файла, содержала букву e.