bashçeşitli metakarakterleri tanımlar . Gönderen man bash:
metakarakter Alıntılama yapılmadığında
sözcükleri ayıran bir karakter. Aşağıdakilerden biri:
| &; () <> boşluk sekmesi
Meta karakterler karakterleri ayırdığından, boşluklarla çevrilip çevrilmedikleri önemli değildir. Boru sembolü, |bir metakarakterdir ve bu nedenle, fark ettiğiniz gibi, çevresinde boşluklara ihtiyaç duymaz.
Not [, ], {, }, ve =vardır değil meta. Aksine, anlamları, boşluklarla çevrilip çevrilmediklerine güçlü bir şekilde bağlıdır.
Boşluğun gerekli olduğu ve gerekmediği örnekler
Fark ettiğiniz gibi, |boşluklarla çevrili olup olmadığı önemli değil . Bash kullanıcılarını sıkça karıştıran bazı örnekleri ele alalım. Düşünmek:
$ (date)
Sun Mar 1 12:47:07 PST 2015
Yukarıdaki parens, datekomutun bir alt kabukta çalıştırılmasını zorunlu kılar. Çünkü (ve )meta karakter olan, boşluk ihtiyaç vardır. Aksine:
$ {date}
bash: {date}: command not found
Yana {ve }vardır değil meta, kabuk davranır {date}tek bir kelime olarak. dateKomutu aramak yerine, adlı bir komutu arar {date}. Birini bulamadığı için bir hata oluşur.
Başka bir yaygın sorun testkomuttur. Aşağıdakiler başarıyla çalışır:
$ [ abc ] && echo Yes
Yes
Boşlukları kaldırdığınızda bir hata oluşur:
$ [abc] && echo Yes
bash: [abc]: command not found
Çünkü [ve ]vardır değil meta, kabuk muamele [.bashrc]sadece gibi tek bir kelime ve sonuç olarak, dateörneğin, bir hatadır.
Atama ifadeleri de boşluklara duyarlıdır. Aşağıdaki atama başarılı:
$ v=date
$ echo $v
date
Boşluk ekleyin, ödev başarısız olur:
$ v= date
Sun Mar 1 12:55:05 PST 2015
Yukarıda, kabuk geçici olarak boşalmaya ayarlanır vve sonra datekomutu yürütür .
Daha önce boşluk eklemek =de başarısızlığa neden olur, ancak farklı bir nedenden dolayı:
$ v =date
bash: v: command not found
Burada, kabuk vargümanı ile komutu yürütmeye çalışır =date. Hata, adlandırılmış bir komut bulamamasıdır v.