Saya mencoba meringkas beberapa skrip shell dalam satu skrip shell besar, seperti ini:
#!/bin/sh
bash script1.sh
bash script2.sh
bash script3.sh
Semua skrip berbagi variabel yang sama var
dan var2
. Saya ingin menghapus definisi variabel dari masing-masing skrip shell dan memasukkannya ke dalam skrip shell besar, sehingga ketika saya mengubah nilai variabel, saya hanya perlu melakukannya sekali.
Namun, ketika saya melakukannya
#!/bin/sh
var1="1"
var2="2"
bash script1.sh
bash script2.sh
bash script3.sh
variabel tidak dikenali oleh referensi $var1
dan $var2
dalam skrip shell individu.
Mohon maaf jika pertanyaan sudah pernah ditanyakan sebelumnya, saya baru mengenal scripting secara umum dan tidak tahu harus mencari apa.
Akan menyenangkan juga mengetahui bagaimana saya dapat mengulang skrip dengan banyak input variabel, seperti
var1="1 2 3 4 5"
var2="a b c d e"
for i in $var1;do for j in $var2;do
script1.sh
script2.sh
done;done
Jawaban yang Diterima:
Saat Anda menjalankan skrip 1-3 di dalam skrip utama Anda, mereka masing-masing dijalankan di dalam sub-kulitnya sendiri, itulah sebabnya mereka tidak mengenali variabel yang ditentukan di cangkang induknya. Gunakan export
untuk membuat variabel tersedia untuk sub-kulit:
#!/bin/sh
export var1="1"
export var2="2"
bash script1.sh
bash script2.sh
bash script3.sh
Alternatif (relevan untuk pertanyaan kedua Anda) adalah meneruskan variabel ke skrip sebagai parameter posisi:
#!/bin/sh
var1="1"
var2="2"
bash script1.sh "$var1" "$var2"
bash script2.sh "$var1" "$var2"
bash script3.sh "$var1" "$var2"
Di dalam skrip 1-3, variabel ini kemudian akan tersedia sebagai $1
dan $2
masing-masing.