2017-12-08 3 views
0

Ich schreibe ein Bash-Skript. Wenn ich es ausführe, bekomme ich einen Syntaxfehler, den ich nicht verstehe."Syntaxfehler in der Nähe von unerwarteten Token` Do '"in Bash-Skript

Hier mein Skript:

#!/bin/bash 
i=1 
while [ $i -le "6" ] 
do 
j=1 
i=`expr $i +1` 
echo \ 
while [ $j -le "$i" ] 
    do 
    echo $i 
    j=`expr $j+1` 
done 
done 
echo \enter code here 

Hier der Fehler:

./test.sh: line 9: syntax error near unexpected token `do' 
./test.sh: line 9: `do' 

Was mache ich falsch?

+0

Ist der umgekehrten Schrägstrich nach 'echo' wirklich da? Wenn dies der Fall ist, sollten Sie es entfernen, da es den Zeilenumbruch verhindert. –

Antwort

2

Die erste Sache, wenn der Backslash aus Zeile 8 entfernt werden soll, da es ein Escape-Zeichen ist (und es würde die Zeilenschaltung danach entkommen). In der letzten Zeile hat der umgekehrte Schrägstrich diese Auswirkung nicht, da ihm ein e folgt.

Auch in der expr Ausdruck müssen Sie die + Zeichen mit Leerzeichen umgeben. Ich zeige auch eine zweite Möglichkeit, j zu erhöhen.

#!/bin/bash 
i=1 
while [ $i -le "6" ] 
do 
j=1 
((i++)) 
echo something-else 
while [ $j -le "$i" ] 
    do 
    echo $i 
    ((j++)) 
done 
done 

Ausgang:

$ ./so_test.sh 
something-else 
2 
2 
something-else 
3 
3 
3 
something-else 
4 
4 
4 
4 
something-else 
5 
5 
5 
5 
5 
something-else 
6 
6 
6 
6 
6 
6 
something-else 
7 
7 
7 
7 
7 
7 
7 
+0

Die Änderung hat den Code für die Erhöhung von "i" geändert, die ich ursprünglich gepostet habe. – LHWizard

Verwandte Themen