2016-09-17 5 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はtrueです。長さ124の何かは、間違いなく空ではありません。おそらく-nを意味するでしょう。

次回は問題を再現できるように、質問に入力を含めてください。

+1

'if'文全体は不要です。文字列が空の場合、 '[$ length -gt 100]'は失敗し、ループはスキップされます。 – chepner

+0

私はドキュメントを誤読していて、空の文字列フラグを後方に持っていなければなりません。ありがとうございました! –

関連する問題