GNU/Linux >> Belajar Linux >  >> Linux

Tidak dapat menggunakan Array sebagai variabel lingkungan

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 '='.


Linux
  1. Kurung Tunggal Dalam Penugasan Variabel Bash?

  2. Karakter yang diizinkan dalam nama variabel lingkungan Linux

  3. Bagaimana cara menghapus variabel lingkungan yang diekspor?

  1. Bagaimana cara mengubah bahasa git saya?

  2. Tidak dapat menggunakan VM kloning, OpenSUSE, VirtualBox

  3. aksesibilitas variabel lingkungan di Linux

  1. Kiat dan trik variabel lingkungan Linux

  2. Bagaimana Cara Menggunakan Variabel Sebagai Kondisi Kasus?

  3. cara meneruskan variabel lingkungan ke sudo su