2016-07-27 4 views
-1

Ich habe versucht, den Code wie folgt auszuführen und es wird mir Fehler: Befehl nicht für die Leitung 4,5,6 gefunden. Ich habe versucht, ähnliche Antworten für die Fragen zu finden, aber ich weiß nicht, wie ich die Version des Betriebssystems des Clusters herausfinden soll, auf dem dieses Skript läuft. Ich bin nicht sicher, ob es ein Problem mit der ersten Linie oder der Linie 4,5,6 gibt. Könnte jemand helfen?Bash-Skript: Befehl nicht gefunden

#!/bin/bash 
for i in 02 03 04 05 06 07 09 10 11 12 13 14 15 16 17 20 21 22 23 24 25; do 
x=grep $i sphnum.txt |cut -c5-6 
y=grep $i sphnum.txt |cut -c8-9 
z=echo $i'.ala.'$x'.sph '$i'.ala.'$y'.sph' 
echo $z 
done 
+0

Die letzte Variable z dient dazu, diese Zeichenfolgen zu einer Zeichenfolge konkav zu machen. – SIMONSON92

+0

Ersetzen Sie 'x = grep $ i spnum.txt | cut -c5-6' durch' x = $ (grep $ i spnum.txt | cut -c5-6) '. Ähnlich für die anderen zwei Zeilen. – yellowantphil

+0

Sie versuchen, einen Befehl namens (der Wert von) '$ i' auszuführen. Das '$ (...)' bewirkt, dass Bash einen Unterbefehl ausführt. Siehe den Abschnitt "Command Substitution" auf der bash man-Seite. – yellowantphil

Antwort

0

Wie die anderen sagten, müssen Sie die Ausgabe der Befehle erfassen.

z=echo foo -bash: foo: command not found

ist nicht dasselbe wie

z=$(echo foo)

Im ersten es

z=echo foo

zu

äquivalent ist, die nicht gültig ist, wie es foo denkt, ist ein Befehl, .

z=$(echo foo) bedeutet jedoch, echo foo auszuführen und den Ausgang in z zu erfassen.

Alle Ihre Befehle führen dies nicht aus.