Bash変数にはどの文字が許可されていますか?
誰かがbashのマニュアルページでbash変数に許可されている名前が記載されている場所を教えてもらえますか?
多くの情報を見て質問しましたが(質問の編集を参照)、明確な答えはありません。
答え1
変数に値を割り当てることができます(使用var=value
)。一つある間の微妙な違い範囲そして変える:
ㅏ範囲値を格納するエンティティです。することができます名前、数字、または下記の特殊文字のいずれかです。 ㅏ変えるで表されるパラメーターです。名前。
名前 文字、数字、下線のみで構成され、文字または下線で始まる単語です。名前s はシェル変数と関数名として使用されます。また〜として知られています識別子。
(これはBashマニュアルの定義です。POSIXにも同様の定義があるかもしれません。)
したがって、正規表現[a-zA-Z_][a-zA-Z_0-9]*
に一致するすべての項目(ASCII文字範囲の仮定)は変数の有効な名前です。 Unicode文字と句読点は機能しません。
一部の言語はUnicodeもサポートしていますが、これはほとんどのプログラミング言語で変数名でサポートされている文字セットとほぼ同じです。数字で始まる単語は数字として扱われます(通常は有効数字のよう0xabcd
なものです)。ダッシュはしばしばマイナス演算子として扱われ、2つの変数(1つではない)の単純な算術演算と同じです。など。123e3
a-b
この形式に属さないパラメータは、番号付きの位置パラメータ(利用可能なスクリプト/関数パラメータset
)と特殊パラメータ。 (シングルアンダースコア)は_
後者の1つで、エラーなしで指定できますが、すぐにリセットされるため、あまり役に立ちません。
これらはすべて良いです:
$ a123=foo __=bar
$ echo $a123 $__
foo bar
しかし:
$ _=foo echo bar >/dev/null
$ echo $_
bar
大文字の場合変数リストBashまたは他のBourne-ishシェルには特別です(readline変数を無視してください。ここでは関係ありません)。みんな大文字で始まるようですが、とは別にhistchars
すべて小文字(!)です。幸い、履歴拡張が有効になっている場合にのみ重要です。