2016-09-17 18 views
0

Ich bin ziemlich neu mit Bash-Skripten und habe Probleme, meine 'while' Schleife zu laufen. Wenn ich ein Echo keywords, eine ganze Liste von Wörtern druckt und dann, wenn ich Echo length, druckt es 124. Ich glaube, dass ich die while-Schleife und die Bedingung richtig verwende, damit ich nicht herausfinden kann, was ich falsch mache. Irgendwelche Gedanken?While-Schleife in Bash nicht ausgeführt

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 

Antwort

2

Das Problem ist hier:

[ -z "$keywords" ] 

-z wahr ist, wenn ihr Argument eine leere Zeichenfolge ist. Etwas von Länge 124 ist definitiv nicht leer. Du hast wahrscheinlich -n gemeint.

Das nächste Mal, bitte auch die Eingabe in die Frage, damit wir das Problem reproduzieren können.

+1

Die gesamte 'if'-Anweisung ist unnötig; Wenn der String leer ist, wird '[$ length -gt 100]' fehlschlagen und die Schleife wird einfach übersprungen. – chepner

+0

Ich habe die Dokumentation falsch gelesen und hatte die leere Zeichenfolge Flagge rückwärts. Vielen Dank! –

Verwandte Themen