To bardzo zależy od powłoki. Jeśli spojrzymy tylko na 4 główne rodziny skorup (Bourne, csh, rc, fish):
Rodzina Bourne
To jest Bourne shell i wszystkie jego odmiany i ksh, bash, ash/ dash, zsh, yash.
var=23: to jest poprawna składnia przypisania zmiennych: słowo składające się z niecytowanych liter, cyfr lub znaków podkreślenia, po których następuje cudzysłow, =który pojawia się przed argumentem polecenia (tutaj jest sam)
var =23, varpolecenie z =23argumentem jako (z wyjątkiem zshgdzie gdzie =somethingjest specjalny operator, który rozwija się do ścieżki somethingpolecenia. W tym przypadku prawdopodobnie wystąpi błąd, ponieważ 23prawdopodobnie nie będzie to poprawna nazwa polecenia).
var= 23: przypisanie, var=po którym następuje nazwa polecenia 23. To ma być wykonane 23z var=przekazanym do jego środowiska ( varzmienna środowiskowa z pustą wartością).
var = 23, varkomenda z argumentem =i 23jako argument. Spróbuj echo = 23na przykład.
Rodzina Csh
csha tcsh. Istnieją przypisania zmiennych ze set var = valueskładnią dla zmiennych skalarnych, set var = (a b)tablic, setenv var valuezmiennych środowiskowych,@ var=1+1 dla przypisania i oceny arytmetycznej.
Więc:
var=23po prostu wywołuje var=23polecenie.
var =23wywołuje varpolecenie =23jako argument.
var= 23wywołuje var=polecenie 23jako argument
var = 23to powołując się na varkomendę =i 23jako argumenty.
Rodzina RC
To rc, esi akanga. W tych powłokach zmienne są tablicami, a przypisania są za pomocą var = (foo bar), przy var = fooczym skrót dla var = (foo)(tablica z jednym fooelementem) i var =skrót dla var = ()(tablica bez elementu, należy użyć var = ''dla tablicy z jednym pustym elementem).
W każdym razie puste miejsca (spacja lub tabulator) wokół =są dozwolone i opcjonalne. Więc w tych powłokach te 4 polecenia są równoważne i równoważne var = (23)do przypisania tablicy z jednym elementem 23.
Ryba
W fishskładnia przypisania zmiennej to set var value1 value2. Podobnie jak w rc, zmienne są tablicami.
Zachowanie byłoby więc takie samo jak w przypadku csh, ale fishnie pozwala na uruchomienie polecenia z =jego nazwą. Jeśli masz takie polecenie jest, trzeba powołać go poprzez shna przykład: sh -c 'exec weird===cmd'.
Więc wszystko var=23i var= 23daje błąd, var =23wywoła varkomendę =23jako argument i var = 23wywoła varkomendę =i 23jako argumenty.