2016-12-05 10 views
0

Ich habe ein Problem mit diesem Code:Praxis Shell-Programmierung (Anfänger)

#! /bin/sh 

i=0 
while [ $i -lt 5 ] ; do  
    echo $1 
    i=$((i + 1)) 
    sleep 1 
done 

Wenn ich das Skript als ./boucle_arg.sh 2 laufen, ich folgende Fehlermeldung erhalten:

./boucle_arg.sh: line 4: [: missing `]' 
+0

Die diese shebang kann stattdessen Problem ist Zitat klar: '[0 -lt' würde diesen Fehler ergeben. Aber ich glaube nicht, dass der Code, den Sie gepostet haben, tatsächlich der Code ist, der dieses Problem verursacht. – andlrc

+0

Sein Code funktioniert auf meinem Computer, wenn man den Shebang ändert - siehe meine Antwort. –

+1

Vergewissern Sie sich, dass das Problem beim Kopieren und Einfügen dieses Codes auftritt und nicht bei Verwendung einer eigenen Version. Leute "säubern" manchmal Code, bevor sie es veröffentlichen, und z.B. Ändern 'while [$ i -lt 5]; tun 'zu 'während [$ i -lt 5]; do 'ist genug, um die Bedeutung zu ändern. –

Antwort

0

Versuchen Sie, die shebang an der Anfang:

#!/bin/bash 

Oder, um noch mehr tragbar (nicht alle Systeme bash in/bin/haben), können Sie

#!/usr/bin/env bash 

Eine weitere Sache: nicht den folgend (bitte den Skript Pfad zu Ihrem eigenen Skript Pfad ändern), indem Sie das Skript ausführbar machen vergessen:

chmod +x /usr/local/bin/script1 
+0

Ich bin mir ziemlich sicher, dass '/ bin/sh' mit'/bin/bash' verlinkt ist. Der Fehler in string und ksh wäre '[: missing]'. – andlrc

+0

OK, guter Punkt; Ich habe versucht, auf meinem Computer und es funktioniert in beide Richtungen (Debian 8.6, GNU Bash, Version 4.3.30 (1)). Also, nicht sicher, was das Problem ist, wie es für mich auf meinem System funktioniert. –