Dalam skrip bash:
kami membuat variabel hanya dengan memberi nama:
abc=ok
atau bisa kita gunakan declare
declare abc=ok
apa bedanya?
dan mengapa bash membuat banyak cara untuk membuat variabel?
bash
shell-script
variable
lovespring
sumber
sumber
declare
jadikan NAMA lokal, seperti denganlocal
perintah. The-g
opsi menekan perilaku ini. Lihathelp declare
.declare
memungkinkan untuk membuat array asosiatif, bilangan bulat, dan variabel hanya baca. Juga, ia memperluas argumennya, jadi hal-hal sepertideclare $name=1
itu mungkin.Jawaban:
Dari
help -m declare
:Jadi,
declare
digunakan untuk mengatur nilai variabel dan atribut .Biarkan saya menunjukkan penggunaan dua atribut dengan contoh yang sangat sederhana:
Dari contoh di atas, saya pikir Anda harus memahami penggunaan
declare
variabel atas variabel normal! Jenisdeclare
asi ini berguna dalam fungsi, loop dengan scripting.Kunjungi juga variabel Pengetikan: mendeklarasikan atau mengeset
sumber
abc=ok
memberikan nilai ke variabelabc
.declare abc
mendeklarasikan variabel yang dipanggilabc
. Keduanya dapat digabungkan sebagaideclare abc=ok
.Dalam bash, seperti shell, variabel string dan array lainnya tidak perlu dideklarasikan, jadi
declare
tidak perlu kecuali Anda ingin meneruskan opsi, misalnyadeclare -A abc
untuk membuatabc
array asosiatif ataudeclare -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 menggunakandeclare -g
, yang membuat variabel tidak lokal; ini berguna ketika dikombinasikan dengan opsi lain, misalnyadeclare -gA
untuk membuat array asosiatif global dalam suatu fungsi.) Contoh:Keluaran:
Hal lain yang dapat Anda lakukan dengan
declare
builtin adalahThe
declare
builtin unik untuk bash. Ini sangat terinspirasi dan sangat dekat dengantypeset
builtin ksh , dan bash menyediakantypeset
sebagai sinonimdeclare
untuk kompatibilitas. (Saya tidak tahu mengapa bash tidak hanya menyebutnyatypeset
). Ada sinonim ketigalocal
,. Ada jugaexport
, yang sama dengandeclare -x
, lagi untuk kompatibilitas (dengan setiap shell gaya Bourne).sumber
export
,local
dandeclare
yang paling kompatibel dengan cangkang lain?export
ada di semua variansh
.local
hanya ada di bash dan zsh,declare
hanya di bash.typeset
ada di ksh, bash dan zsh.