abc=ok
memberikan nilai ke variabel abc
. declare abc
mendeklarasikan variabel yang dipanggil abc
. Keduanya dapat digabungkan sebagai declare abc=ok
.
Dalam bash, seperti shell, variabel string dan array lainnya tidak perlu dideklarasikan, jadi declare
tidak perlu kecuali Anda ingin meneruskan opsi, misalnya declare -A abc
untuk membuat abc
array asosiatif atau declare -r
membuat variabel read-only. Namun, di dalam suatu fungsi, declare
membuat perbedaan: itu menyebabkan variabel menjadi lokal ke fungsi, yang berarti bahwa nilai variabel di luar fungsi (jika ada) dipertahankan. (Kecuali jika Anda menggunakan declare -g
, yang membuat variabel tidak lokal; ini berguna ketika dikombinasikan dengan opsi lain, misalnya declare -gA
untuk membuat array asosiatif global dalam suatu fungsi.) Contoh:
f () {
declare a
a='a in f'
b='b in f'
echo "From f: a is $a"
echo "From f: b is $b"
}
a='Initial a'
b='Initial b'
f
echo "After f: a is $a"
echo "After f: b is $b"
Keluaran:
From f: a is a in f
From f: b is b in f
After f: a is Initial a
After f: b is b in f
Hal lain yang dapat Anda lakukan dengan declare
builtin adalah
The declare
builtin unik untuk bash. Ini sangat terinspirasi dan sangat dekat dengan typeset
builtin ksh , dan bash menyediakan typeset
sebagai sinonim declare
untuk kompatibilitas. (Saya tidak tahu mengapa bash tidak hanya menyebutnya typeset
). Ada sinonim ketiga local
,. Ada juga export
, yang sama dengan declare -x
, lagi untuk kompatibilitas (dengan setiap shell gaya Bourne).
declare
jadikan NAMA lokal, seperti denganlocal
perintah. The-g
opsi menekan perilaku ini. Lihathelp declare
.