2017-03-02 2 views
4

Ich versuche, das Array in der While-Schleife zu bekommen und muss auch den Wert im Array zu aktualisieren."[0: Befehl nicht gefunden" in Bash

Unten ist mein Code, was ich versucht habe. Ich erhalte diesen Fehler [0: command not found

#!/bin/bash 
i=0 
while [$i -le "{#myarray[@]}" ] 
do 
    echo "Welcome $i times" 
    i= $(($i+1))) 
done 

ich alle Hilfe und Dank im Voraus zu schätzen wissen!

+0

ich Gregs Wiki gefunden in das Lernen bash sehr hilfreich zu sein: http://mywiki.wooledge.org/BashGuide/TestsAndConditionals – kalaracey

Antwort

8

Benötigen Sie einen Platz nach und kein Leerzeichen vor oder nach = in der Zuordnung. $(($i+1))) würde versuchen, die Ausgabe des Ausdrucks ((...)) auszuführen, und ich bin mir sicher, dass das nicht das ist, was Sie wollen. Außerdem fehlt ein $ vor dem Array-Namen.

Mit diesen Dingen korrigiert, Ihre while-Schleife wäre:

#!/bin/bash 
i=0 
while [ "$i" -le "${#myarray[@]}" ] 
do 
    echo "Welcome $i times" 
    i=$((i + 1)) 
done 
  • i=$((i + 1)) kann auch als ((i++))
  • geschrieben werden ist es immer besser Variablen in doppelte Anführungszeichen innerhalb [ ... ]
  • Scheck beilegen Ihr Skript durch shellcheck - Sie können die meisten grundlegenden Probleme dort
fangen

Siehe auch:

+1

Große Antwort auf eine zweifelhafte Frage (breit genug, um in mehrere Duplikate aufgeteilt zu werden, wie Sie zeigen raus). –