A bash array tidak bisa menjadi variabel lingkungan karena variabel lingkungan hanya boleh berupa pasangan string nilai kunci.
Anda dapat melakukan seperti yang dilakukan shell dengan $PATH variabel, yang pada dasarnya adalah larik jalur; ubah larik menjadi string, dibatasi dengan beberapa karakter tertentu yang tidak ada dalam nilai larik:
$ arr=( aa bb cc "some string" )
$ arr=$( printf '%s:' "${arr[@]}" )
$ printf '%s\n' "$arr"
aa:bb:cc:some string:
Atau lebih rapi,
arr=( aa bb cc "some string" )
arr=$( IFS=:; printf '%s' "${arr[*]}" )
export arr
Perluasan ${arr[*]} akan menjadi elemen dari arr array dipisahkan oleh karakter pertama dari IFS , di sini disetel ke : . Perhatikan bahwa jika melakukannya dengan cara ini, elemen string akan terpisah (tidak dibatasi ) oleh : , yang berarti Anda tidak akan dapat membedakan elemen kosong di bagian akhir, jika ada.
Alternatif untuk meneruskan nilai ke skrip menggunakan variabel lingkungan adalah (jelas?) menggunakan argumen baris perintah:
arr=( aa bb cc )
./some_script "${arr[@]}"
Skrip kemudian akan mengakses argumen yang diteruskan satu per satu dengan menggunakan parameter posisi $1 , $2 , $3 dll, atau dengan menggunakan [email protected] :
printf 'First I got "%s"\n' "$1"
printf 'Then I got "%s"\n' "$2"
printf 'Lastly there was "%s"\n' "$3"
for opt in "[email protected]"; do
printf 'I have "%s"\n' "$opt"
done
Array khusus untuk bash. Variabel lingkungan adalah pasangan nama-nilai.
Baca spesifikasi pada variabel lingkungan, yang menyatakan, sebagian:
Nilai variabel lingkungan adalah serangkaian karakter. Untuk program bahasa C, larik string yang disebut lingkungan harus tersedia saat proses dimulai. Array tersebut ditunjuk oleh variabel eksternal environ , yang didefinisikan sebagai:
extern char **environ;String ini memiliki bentuk name=value; nama tidak boleh mengandung karakter '='.