それはシェルに大きく依存します。4つのメインシェルファミリ(Bourne、csh、rc、fish)のみを見る場合:
ボーンファミリー
これは、Bourneシェルとそのすべての亜種であるとksh
、bash
、ash
/ dash
、zsh
、yash
。
var=23
:それは正しい変数割り当て構文です:引用符で囲まれていない文字、数字、またはアンダースコアで構成され、=
コマンド引数の前に現れる引用符で囲まれていない単語(ここでは単独)
var =23
、引数としてのvar
コマンド=23
(zsh
where =something
はsomething
コマンドのパスに展開する特別な演算子です。ここで23
は、有効なコマンド名ではない可能性が高いため、エラーが発生する可能性があります)。
var= 23
:割り当てのvar=
後にコマンド名が続き23
ます。これは、実行するためのものだ23
とvar=
その環境(に渡されたvar
空の値を持つ環境変数)。
var = 23
、および引数としてのvar
コマンド。たとえばで試してみてください。=
23
echo = 23
Cshファミリー
csh
およびtcsh
。そこにある変数の割り当てはset var = value
、スカラー変数、set var = (a b)
配列、setenv var value
環境変数、@ var=1+1
割り当て、および算術評価の構文を使用しています。
そう:
var=23
var=23
コマンドを呼び出すだけです。
var =23
引数としてvar
コマンドを呼び出して=23
います。
var= 23
引数としてvar=
コマンドを呼び出して23
います
var = 23
およびを引数としてvar
コマンドを呼び出しています。=
23
Rcファミリー
それがrc
、es
そしてakanga
。これらのシェルでは、変数は配列であり、割り当てはでありvar = (foo bar)
、var = foo
短いvar = (foo)
(1つのfoo
要素を持つ配列)とvar =
短いvar = ()
(1つの要素がないvar = ''
配列、1つの空の要素を持つ配列に使用)です。
いずれの場合でも、周囲の空白(スペースまたはタブ)=
は許可され、オプションです。したがって、これらのシェルでは、これらの4つのコマンドはvar = (23)
、1つの要素を持つ配列を割り当てるのと同等であり、同等23
です。
魚
ではfish
、変数割り当て構文はset var value1 value2
です。のようにrc
、変数は配列です。
したがって、動作はの場合と同じになりますが、名前にaを指定してコマンドを実行するcsh
ことfish
はできません=
。そのようなコマンドがある場合は、次のようにして呼び出す必要がありsh
ますsh -c 'exec weird===cmd'
。
だから、すべてvar=23
とvar= 23
あなたにエラーを与えるだろう、var =23
呼ぶvar
とコマンドを=23
引数としてとvar = 23
呼ぶvar
にコマンドを=
し、23
引数として。