Başta, declare -r
ve readonly
arasındaki fark nedir?Bash'da declare -r` ve `readonly` arasındaki fark nedir?
$ declare -r a=a1
$ readonly b=b1
Hangisini seçeceğime emin değilim.
Başta, declare -r
ve readonly
arasındaki fark nedir?Bash'da declare -r` ve `readonly` arasındaki fark nedir?
$ declare -r a=a1
$ readonly b=b1
Hangisini seçeceğime emin değilim.
Cevap: İlk bakışta Kapsam
, hiçbir fark.
$ declare -r a=a1
$ readonly b=b1
$ declare -p a b
declare -r a="a1"
declare -r b="b1"
kullanarak incelenmesi Ama, kapsam
$ function f() {
declare -r c=c1
readonly d=d1
echo "f:" c $c d $d
}
$ echo c $c d $d
c d
# verify $c $d not set
$ f
f: c c1 d d1
# prints as expected
$ echo c $c d $d
c d d1
# $d still has a value!
Yani bir fark Değişken Kapsamı küresel yapacak readonly
olduğunu farklıdır. declare
, yerel değişken kapsamını değiştirir (beklenen).
Not: declare
deyimi (örneğin declare -rg a="a1"
) için -g
işaretini ekleyerek Değişken Kapsamı küresel yapar. (teşekkürler @chepner).
'bash' 4.2'den itibaren' declare -gr' 'readonly' ile aynı görünmektedir. – chepner
'readonly' ile declare -r' arasında bir fark olmadığı anlaşılıyor. '-g' bayrağı belirtilmemişse, bir işlev içinde 'bildirme' her zaman yerel değişkenler oluşturabilir. – codeforester