Ich führe das folgende Skript aus:
VAR="Test"
sh -c 'echo "Hello $VAR"'
Aber ich bekomme:
# ./test.sh
Hello
Wie kann ich die Variable VAR
meines Skripts an die mit erstellte Shell senden sh -c '...'
?
shell
shell-script
scripting
Matthieu Napoli
quelle
quelle
export var="Test"
in einer Zeile tun .Hier ist noch eine andere Möglichkeit, Variablen
sh -c
(als Positionsargumente) zu übergeben:quelle
$@
, wie erwartet zu arbeiten, z.sh -c 'echo "Hello $@"' _ "$VAR" "$VAR2"
`$0
in den Fehler- / Warnmeldungen der Shell angezeigt wird.Wenn Sie sie nicht als Umgebungsvariablen exportieren möchten, können Sie hier einen Trick ausführen. Speichern Sie Ihre Variablendefinition in einer Datei
.var_init.sh
und geben Sie sie wie folgt in Ihre Sub-Shell ein:.var_init.sh
von der Kommandozeile:
Auf diese Weise legen Sie Ihre Variablen nur bei der Ausführung Ihrer Subshell fest.
quelle
ENV=.var_ini.sh sh -c '...'
.var_init.sh
erwartet wird, dass dies im aktuellen Verzeichnis gesucht wird (im Gegensatz zu$PATH
), dies geschrieben werden sollte. ./var_init.sh