Bashでlocal
変数とdeclare -r
(読み取り専用)変数の両方を作成するにはどうすればよいですか?
私が行った場合:
function x {
declare -r var=val
}
次に、読み取り専用のグローバルvar
を取得します。
私が行った場合:
function x {
local var=val
}
私が行った場合:
function x {
local var=val
declare -r var
}
次に、再びグローバルを取得します(他の関数からvar
にアクセスできます)。
Bashでローカルと読み取り専用の両方を組み合わせる方法は?
help local
はBashでそれについて言及していませんが.x、local
はdeclare
と同じオプションを受け入れることができます(少なくともBash 4.3.30の時点で、このドキュメントの監視は修正されています) 。
したがって、次のことを簡単に行うことができます。
local -r var=val
とはいえ、declare
関数内は、@ ruakhがコメントで述べているように、デフォルトではlocal
と同じように動作するため、最初の試行でもlocal読み取りの作成に成功するはずです。 -変数のみ。
Bash 4.2以降では、declare
の-g
オプションを使用してoverrideこれを実行し、関数内からでもグローバル変数を作成できます(Bash3.xはnotをサポートします)この。)
ありがとう、 テイラーエドミストン :
help declare
は、bothdeclare
およびlocal
によってサポートされるすべてのオプションを示しています。