Setzen von Variablen mit der Ausführung eines Befehl mit exec
Können Sie eine variable für einen einzelnen Befehl wie dieser:
MY_VARIABLE=my_value ./my_script.sh
Können Sie die hand von einem anderen Skript wie dieses:
exec ./my_script.sh
Aber wenn ich versuche beides zu tun wie diese:
exec MY_VARIABLE=my_value ./my_script.sh
Bekomme ich eine Fehlermeldung:
exec: MY_VARIABLE=my_value: not found
Warum ist das so?
Gibt es eine Möglichkeit, dies zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie
env
um die Umgebungsvariable anzugeben:Wenn Sie wollen, dass Ihr Skript zum starten mit einer leeren Umgebung aus-oder nur mit den angegebenen Variablen, verwenden Sie die
-i
option.Vom
man env
:exec env VAR1=value env VAR2=value2 ./my_script.sh
In der bash kann das setzen von Umgebungsvariablen für einen Befehl, indem Sie die Aufgaben am Anfang des Befehls. Dies funktioniert auf die gleiche für
exec
wie jeder andere Befehl, so schreiben Sie:exec env "$@"
und es wird funktionieren, ob oder nicht "$@" legt fest Variablen. Für diese Lösung ist, hätte ich zu analysieren und split bis die Argumente in "$@".