Ich habe diesen funktionierenden und einfachen Code, um die Positionsparameter VALUES wiederzugeben
for i
do
echo "Argument = $i "
done
Hier ist die tatsächliche Ausgabe des Scrips
Argument = --atleast-pkgconfig-version
Argument = 0.9.0
Es macht den Job, aber ich habe versucht herauszufinden, wie man einen Index zur Echoausgabe hinzufügt.
Das funktioniert nicht
cnt=1
for i
do
echo "Argument $cnt = $i "
((cnt++))
done
Der aktuelle Code macht den Job, der Index wäre nur das i-Tüpfelchen - so:
Argument #1 = --atleast-pkgconfig-version
Argument #2 = 0.9.0
Irgendwelche Ideen?
Update Nr. 1
Ich poste dies als Kopie aus dem Texteditor, um das Zeitlimit für die „Bearbeitung in 5 Minuten“ zu umgehen.
Ich habe beide Codes ausgeführt, beide in #! / bin / sh-Skripte. Einer wird direkt im Hauptskript ausgeführt, der zweite im Skript, das vom Hauptskript aus aufgerufen wird - wie angegeben. Beide Codes werden im MAIN-Skript problemlos ausgeführt, aber der erste Code, den ich ursprünglich als problematisch eingestuft habe, wird nicht im sekundären Skript ausgeführt.
Ja, der "portablere" Code behebt das Problem - er wird im gewünschten Skript korrekt ausgeführt. Die ursprüngliche Frage wird immer noch nicht beantwortet - warum schlägt sie mit dem Fehler "Nicht gefunden" fehl.
HAUPT-Skript--exists glib-2.0 0
--modversion glib-2.0 2.54.3
--exists --print-errors glib-2.0 >= 2.28 0
First code - OK
Argument #1 = dummy
Argument #2 = mt
Second code OK
Argument #1 = dummy
Argument #2 = mt
Sekundärskript
Erster Code - FAILS
/usr/bin/arm-linux-gnueabihf-pkg-config: 19: /usr/bin/arm-linux-gnueabihf-pkg-config: cnt++: not found
Argument #1 = --print-errors
/usr/bin/arm-linux-gnueabihf-pkg-config: 19: /usr/bin/arm-linux-gnueabihf-pkg-config: cnt++: not found
Argument #1 = glib-2.0 >= 2.28
/usr/bin/a
Zweiter Code - läuft gut
Argument #1 = --exists
Argument #2 = --print-errors
Argument #3 = glib-2.0 >= 2.28
Erster Code
cnt=1
for i do
echo "Argument #$cnt = $i"
((cnt++))
done
Zweiter Code
count=1
for arg do
printf 'Argument #%d = %s\n' "$count" "$arg"
count=$(( count + 1 ))
done
j=0; for i do printf "arg#$((j=j+1)) = %s\n" "$i"; done
. Und nein, Sie können nicht++j
alle Muscheln verwenden.