Itu sangat tergantung pada shell. Jika kita hanya melihat 4 famili shell utama (Bourne, csh, rc, fish):
Keluarga Bourne
Itu adalah Bourne shell dan semua variannya dan ksh
, bash
, ash
/ dash
, zsh
, yash
.
var=23
: itulah sintaks penugasan variabel yang benar: kata yang terdiri dari huruf yang tidak dikutip, digit atau garis bawah diikuti oleh tanda kutip =
yang muncul di depan argumen perintah (di sini sendiri)
var =23
, var
perintah dengan =23
argumen (kecuali di zsh
mana =something
ada operator khusus yang meluas ke jalur something
perintah. Di sini, Anda mungkin akan mendapatkan kesalahan karena 23
tidak mungkin menjadi nama perintah yang valid).
var= 23
: tugas yang var=
diikuti oleh nama perintah 23
. Itu dimaksudkan untuk mengeksekusi 23
dengan var=
diteruskan ke lingkungannya ( var
variabel lingkungan dengan nilai kosong).
var = 23
, var
perintah dengan =
dan 23
sebagai argumen. Coba dengan echo = 23
misalnya.
Keluarga Csh
csh
dan tcsh
. Tugas variabel ada dengan set var = value
sintaks untuk variabel skalar, set var = (a b)
untuk array, setenv var value
untuk variabel lingkungan, @ var=1+1
untuk penilaian tugas dan aritmatika.
Begitu:
var=23
hanya menjalankan var=23
perintah.
var =23
memohon var
perintah dengan =23
sebagai argumen.
var= 23
memohon var=
perintah dengan 23
sebagai argumen
var = 23
memohon var
perintah dengan =
dan 23
sebagai argumen.
Keluarga Rc
Itu rc
, es
dan akanga
. Dalam shell tersebut, variabel adalah array dan tugas dengan var = (foo bar)
, dengan var = foo
menjadi kependekan var = (foo)
(array dengan satu foo
elemen) dan var =
kependekan var = ()
(array tanpa elemen, gunakan var = ''
untuk array dengan satu elemen kosong).
Dalam kasus apa pun, ruang kosong (spasi atau tab) di sekitarnya =
diizinkan dan opsional. Jadi dalam shell tersebut 4 perintah itu sama dan setara var = (23)
untuk menetapkan array dengan satu elemen 23
.
Ikan
Dalam fish
, sintaks penugasan variabel adalah set var value1 value2
. Seperti dalam rc
, variabel adalah array.
Jadi perilakunya akan sama dengan csh
, kecuali itu fish
tidak akan membiarkan Anda menjalankan perintah dengan =
namanya. Jika Anda memiliki perintah tersebut, Anda perlu untuk memohon melalui sh
misalnya: sh -c 'exec weird===cmd'
.
Jadi semua var=23
dan var= 23
akan memberi Anda kesalahan, var =23
akan memanggil var
perintah dengan =23
sebagai argumen dan var = 23
akan memanggil var
perintah dengan =
dan 23
sebagai argumen.