🤡
readonly と declare -r の違い
スコープの対象範囲が異なる
readonly
グローバルスコープ
declare -r
ローカルスコープ
declare -rg
グローバルスコープ
例
readonly zzz='グローバルreadonly'
declare -r xxx='グローバルdeclare -r'
function test () {
declare -r aaa='declare -r'
readonly bbb='readonly'
declare -rg ccc='declare -rg'
}
test
echo "zzz=${zzz}"
echo "xxx=${xxx}"
echo "aaa=${aaa}"
echo "bbb=${bbb}"
echo "ccc=${bbb}"
-----
// 以下出力
// zzz=グローバルreadonly
// xxx=グローバルdeclare -r
// aaa=
// bbb=readonly
// ccc=declare -rg
※上記${xxx}
は readonly
又はdeclare -rg
と同じ。
macOSのbashではdeclare -g
は利用不可らしい。
Discussion