Bash: "Befehl nicht gefunden" auf einfache Variablenzuweisung
Hier ist eine einfache version von meinem script, das zeigt das scheitern:
#!/bin/bash
${something:="false"}
${something_else:="blahblah"}
${name:="file.ext"}
echo ${something}
echo ${something_else}
echo ${name}
Wenn ich mit echo die Variablen, bekomme ich die Werte, die ich in setzen, aber es strahlt auch ein Fehler. Was mache ich falsch?
Ausgabe:
./test.sh: line 3: blahblah: command not found
./test.sh: line 4: file.ext: command not found
false
blahblah
file.ext
Den ersten beiden Zeilen werden emittiert, um stderr, während die nächsten drei sind die Ausgabe nach stdout.
Meine Plattform ist fedora 15, bash, version 4.2.10.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Setzen einer Variablen auf einer Linie von selbst ausführen des Befehls in der Variablen gespeichert. Dass eine Zuordnung durchgeführt wird, zur gleichen Zeit ist nebensächlich.
Kurz gesagt, nicht tun.
Können Sie hinzufügen Doppelpunkt:
Den trick mit einem ":" (no-operation-Befehl) ist, dass gar nichts geht executated, aber Parameter wird erweitert. Ich persönlich weiß nicht, wie diese syntax, denn für Menschen, die nicht wissen, diesen trick, der code ist schwer zu verstehen.
Können Sie diese als alternative:
oder mehr, mehr tragbar (aber IMHO besser lesbar):
man :
und ich denke, das : tun, was ich möchte. Ich werde sicher kommentieren Sie dies gründlich obwohl. Gibt es bessere alternativen?Es ist einfach
Wenn Sie
$(variable_name:=value}
bash ersetzt die variable_name wenn es gesetzt ist, andernfalls verwendet die Standard -, die Sie angegeben.