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, date
komutun 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. date
Komutu aramak yerine, adlı bir komutu arar {date}
. Birini bulamadığı için bir hata oluşur.
Başka bir yaygın sorun test
komuttur. 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 v
ve sonra date
komutu 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 v
argümanı ile komutu yürütmeye çalışır =date
. Hata, adlandırılmış bir komut bulamamasıdır v
.