それはシェルに大きく依存します。4つのメインシェルファミリ(Bourne、csh、rc、fish)のみを見る場合:
ボーンファミリー
これは、Bourneシェルとそのすべての亜種であるとksh、bash、ash/ dash、zsh、yash。
var=23:それは正しい変数割り当て構文です:引用符で囲まれていない文字、数字、またはアンダースコアで構成され、=コマンド引数の前に現れる引用符で囲まれていない単語(ここでは単独)
var =23、引数としてのvarコマンド=23(zshwhere =somethingはsomethingコマンドのパスに展開する特別な演算子です。ここで23は、有効なコマンド名ではない可能性が高いため、エラーが発生する可能性があります)。
var= 23:割り当てのvar=後にコマンド名が続き23ます。これは、実行するためのものだ23とvar=その環境(に渡されたvar空の値を持つ環境変数)。
var = 23、および引数としてのvarコマンド。たとえばで試してみてください。=23echo = 23
Cshファミリー
cshおよびtcsh。そこにある変数の割り当てはset var = value、スカラー変数、set var = (a b)配列、setenv var value環境変数、@ var=1+1割り当て、および算術評価の構文を使用しています。
そう:
var=23var=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引数として。