2016-09-17 128 views
0

我很新的Bash腳本,並且無法讓我的'while'循環運行。當我回顯keywords時,會打印出一整個單詞列表,然後當我回顯length時,它會打印124。我相信我正在使用while循環和正確的條件,所以我無法弄清楚我做錯了什麼。有什麼想法嗎?雖然循環在Bash沒有運行

keywords=$1 
length=${#keywords} 

echo "$keywords" 
echo "$length" 

if [ -z "$keywords" ]; then 
    while [ $length -gt 100 ]; do 
     echo "$keywords" 
     echo "$length" 

     keywords="${keywords%,*}" 
     length=${#keywords} 
    done 
fi 

echo $keywords 

回答

2

的問題是在這裏:如果它的參數是一個空字符串

[ -z "$keywords" ] 

-z是真實的。長度爲124的東西絕對不是空的。你可能意思是-n

下一次,請還包括問題中的輸入,以便我們可以重現問題。

+1

整個'if'語句是不必要的;如果字符串爲空,'[$ length -gt 100]'將失敗,循環將被忽略。 – chepner

+0

我必須誤讀文檔並將空字符串標誌向後。謝謝! –