2013-11-22 76 views
6

我想看看string1是否包含另一個string2。我這樣做,以這種方式:Bash:字符串包含連字符

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 

它不工作。我也試過:提前

+1

你'$了'似乎是一個文件名,而不是文件內容。所以你的代碼有點混亂。 – Mat

回答

5

下面的代碼段帶來的問題

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

在這裏,你正在寫一個文件$a,然後嘗試做字符串比較。


嘗試以下

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

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

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

沒有成功...

感謝您重定向到的字符串到文件,所以而比較從文件閱讀。

變量a包含文件的名稱而不是內容。

說:

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

以下

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

爲你工作,因爲變量拿着文件的名稱是由字母e

+0

謝謝,這給了我解決我做錯了什麼。 – user1064285

+0

@ user1064285嗯..不知道這是否給了你解決方案,因爲你已經接受了替代答案:)祝你好運。 – devnull