Ich werde auf das Fleisch und Knochen erhalten:Shell-Skript variablen Einsatz
MY_VAR=6
until [$MY_VAR = 0]
do
dir/dir_$MY_VAR.log
ps | grep "NAME_$MY_VAR.ksh"
check some things
if [results = ok]
echo "program $MY_VAR sucessful"
else
echo "program $MY_VAR failure"
MY_VAR = `expr $MY_VAR - 1`
done
Jetzt bin ich die folgenden Fehler bekommen my_var nicht gefunden und [6: nicht gefunden, so dass ich einen ziemlich noobish Fehler unter der Annahme, . Ich denke, die Logik ist solide genug, nur ein einfacher Syntaxfehler, den ich irgendwo durch das Aussehen der beiden Fehler mache, von denen ich denke, dass es in der Deklaration sein könnte.
Ich bekomme den Fehler MY_VAR--: mehr Token erwartet, könnten Sie auf Ihre Lösung wie die Verwendung von (()) und [[]] – Jewsef
@Jewsef: Mit welcher Shell und auf welcher Linie von welcher Version von die Skripte von meiner Antwort? Eine Sache zu beachten, ich hatte den Fall des Variablennamens geändert, aber ich tat dies inkonsistent. Das könnte einige Probleme verursacht haben. Entschuldigung - ich habe es behoben. In bash und ksh doppelte eckige Klammern [einige zusätzliche Funktionen aktivieren] (http://mywiki.wooledge.org/BashFAQ/031). Wenn Sie doppelte Klammern für numerische Vergleiche verwenden, können Sie zum Beispiel '==' und '>' anstelle des hässlichen '-eq' und' -gt' verwenden. Sie können auch arithmetische Operationen wie das angezeigte Dekrement '((my_var -))' ausführen. –
@Jewsef: Ich habe gerade bemerkt, dass das Skript in Ihrer Frage die 'fi' fehlt, um das' if' zu schließen. Ich habe dein Skript in meine Antwort kopiert und es vergessen (das jetzt behoben). Das könnte die Ursache Ihres Fehlers sein. –