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, varperintah dengan =23argumen (kecuali di zshmana =somethingada operator khusus yang meluas ke jalur somethingperintah. Di sini, Anda mungkin akan mendapatkan kesalahan karena 23tidak mungkin menjadi nama perintah yang valid).
var= 23: tugas yang var=diikuti oleh nama perintah 23. Itu dimaksudkan untuk mengeksekusi 23dengan var=diteruskan ke lingkungannya ( varvariabel lingkungan dengan nilai kosong).
var = 23, varperintah dengan =dan 23sebagai argumen. Coba dengan echo = 23misalnya.
Keluarga Csh
cshdan tcsh. Tugas variabel ada dengan set var = valuesintaks untuk variabel skalar, set var = (a b)untuk array, setenv var valueuntuk variabel lingkungan, @ var=1+1untuk penilaian tugas dan aritmatika.
Begitu:
var=23hanya menjalankan var=23perintah.
var =23memohon varperintah dengan =23sebagai argumen.
var= 23memohon var=perintah dengan 23sebagai argumen
var = 23memohon varperintah dengan =dan 23sebagai argumen.
Keluarga Rc
Itu rc, esdan akanga. Dalam shell tersebut, variabel adalah array dan tugas dengan var = (foo bar), dengan var = foomenjadi kependekan var = (foo)(array dengan satu fooelemen) 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 fishtidak akan membiarkan Anda menjalankan perintah dengan =namanya. Jika Anda memiliki perintah tersebut, Anda perlu untuk memohon melalui shmisalnya: sh -c 'exec weird===cmd'.
Jadi semua var=23dan var= 23akan memberi Anda kesalahan, var =23akan memanggil varperintah dengan =23sebagai argumen dan var = 23akan memanggil varperintah dengan =dan 23sebagai argumen.