Bu iki komut dizisi arasındaki anahtar fark, ikincisinin echo $bkabuk sözcük bölme işlemini gerçekleştiren içeriyor olmasıdır . İkinci komut sırasının birincisiyle aynı şekilde çalışmasını sağlamak için, değiştirin:
echo $b | grep "*)>nS4XkrlH @XUL"
ile:
echo "$b" | grep "*)>nS4XkrlH @XUL"
Kelime bölme
Bu iki echoifadede boşlukların nasıl işlendiğini gözlemleyin :
$ b="a b c"
$ echo "$b"
a b c
$ echo $b
a b c
Çift tırnak işaretleri olmadan, kabuk argümanlar üzerinde sözcük ayırma gerçekleştirir echo. Bu, tüm ardışık boşlukların tek bir alana yoğunlaştırıldığı anlamına gelir. Çift tırnak ile, kelime bölme bastırılır ve boşluk korunur.
Sözcük Bölme ve grepBirden Çok Boşluklu Bir Desen
Sizin grepdesen iki ardışık boşluklar içeriyor. Argüman echoçift tırnak içine alınmazsa, çıktısı echobu iki boşluğa sahip olmaz ve eşleşme bulunmaz. Gözlemek:
$ b="*)>nS4XkrlH @XUL"
$ echo $b | grep "*)>nS4XkrlH @XUL"
$ echo "$b" | grep "*)>nS4XkrlH @XUL"
*)>nS4XkrlH @XUL
İlki grephiçbir şeyle eşleşmiyor, ikincisi eşleşmiyor. Aradaki fark kabuğun kelime bölüşmesidir.