Saya menjalankan skrip berikut:
VAR="Test"
sh -c 'echo "Hello $VAR"'
Tapi saya mendapatkan:
# ./test.sh
Hello
Bagaimana saya bisa mengirim variabel VAR
skrip saya ke shell yang dibuat dengan sh -c '...'
?
shell
shell-script
scripting
Matthieu Napoli
sumber
sumber
export var="Test"
dalam satu baris.Berikut ini cara lain untuk meneruskan variabel ke
sh -c
(sebagai argumen posisi):sumber
$@
untuk bekerja seperti yang diharapkan, mis.sh -c 'echo "Hello $@"' _ "$VAR" "$VAR2"
`$0
ditampilkan dalam pesan kesalahan / peringatan oleh shell.Jika Anda tidak ingin mengekspornya sebagai variabel lingkungan, inilah trik yang bisa Anda lakukan. Simpan definisi variabe Anda ke file
.var_init.sh
dan sumber di sub-shell Anda seperti ini:.var_init.sh
dari baris perintah:
Dengan cara ini, Anda hanya mengatur variabel Anda pada pelaksanaan subkulit Anda.
sumber
ENV=.var_ini.sh sh -c '...'
.var_init.sh
diharapkan untuk dicari dalam direktori saat ini (tidak seperti$PATH
), itu harus ditulis. ./var_init.sh