'=' İşaretinizin çevresinde boşluk olamaz.
Yazarken:
STR = "foo"
bash, STR adlı bir komutu 2 argümanla çalıştırmaya çalışır ('=' ve 'foo' dizeleri)
Yazarken:
STR =foo
bash, STR adlı bir komutu 1 argümanla çalıştırmaya çalışır ('= foo' dizesi)
Yazarken:
STR= foo
bash, STR komutunu ortamındaki boş dizeye ayarlayarak komut foo'yu çalıştırmayı dener.
Bunun açıklığa kavuşturmaya yardımcı olup olmadığından veya sadece gizleme olup olmadığından emin değilim, ancak şunu unutmayın:
- İlk komut ile tamamen aynıdır:
STR "=" "foo"
,
- ikincisi ile aynı
STR "=foo"
,
- ve sonuncusu eşittir
STR="" foo
.
Sh dil spesifikasyonunun ilgili bölümü , bölüm 2.9.1 :
"Basit komut", herhangi bir sırada isteğe bağlı olarak değişken atamaları ve yeniden yönlendirmelerden oluşan bir dizidir ve isteğe bağlı olarak bir kontrol operatörü tarafından sonlandırılan kelimeler ve yeniden yönlendirmeler gelir.
Bu bağlamda a word
, bash'ın çalışacağı komuttur. İçeren herhangi bir dize =
, bir yönlendirme değil ve içermez does herhangi bir dize ise bir yönlendirme değil (dizenin başında dışında herhangi bir pozisyonda), değişken bir atama olduğunu =
bir komuttur. In STR = "foo"
, STR
değişken bir atama değildir.