J'exécute le script suivant:
VAR="Test"
sh -c 'echo "Hello $VAR"'
Mais je reçois:
# ./test.sh
Hello
Comment envoyer la variable VAR
de mon script au shell créé avec sh -c '...'
?
shell
shell-script
scripting
Matthieu Napoli
la source
la source
export var="Test"
en une seule ligne.Voici encore une autre façon de passer des variables
sh -c
(en tant qu'arguments positionnels):la source
$@
de travailler comme prévu, par exemple.sh -c 'echo "Hello $@"' _ "$VAR" "$VAR2"
`$0
est affiché dans les messages d'erreur / d'avertissement par le shell.Si vous ne voulez pas les exporter en tant que variables d'environnement, voici une astuce que vous pourriez faire. Enregistrez votre définition de variable dans un fichier
.var_init.sh
et sourcez-la dans votre sous-shell comme ceci:.var_init.sh
à partir de la ligne de commande:
De cette façon, vous ne définissez vos variables qu'à l'exécution de votre sous-shell.
la source
ENV=.var_ini.sh sh -c '...'
.var_init.sh
devrait être recherché dans le répertoire actuel (par opposition à$PATH
), il devrait être écrit. ./var_init.sh