2016-09-17 4 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

Я, должно быть, неправильно прочитал документацию и имел пустой флаг строки назад. Спасибо! –

Смежные вопросы