Shell dapat mengubah baris perintah sebelum eksekusi perintah. Baik shell dan grepdapat menggunakan mengutip untuk menghapus arti khusus dari beberapa karakter. Meskipun demikian, grepdan kerang memiliki karakter khusus yang berbeda. Selain itu, karakter khusus yang tidak terhapuskan yang tidak dihasilkan dari ekspansi yang ada dihapus, sebelum eksekusi perintah, oleh shell.
echo '[]' | grep '[]'
Shell mentransmisikan argumen []ke grepdan diuraikan sebagai ekspresi braket salah oleh grep.
echo '[]' | grep \[]
Di atas, kita bisa melihat kasus serupa. Garis miring terbalik dihapus dan []dikirim sebagai argumen untuk grep. grepmengenali ekspresi braket yang salah.
echo '[]' | grep '\[]'
Akhirnya, dalam kasus ini, tanda kutip dihapus oleh shell dan \[]ditransmisikan sebagai argumen untuk greptetapi, dalam kasus khusus ini ¹, \[ditafsirkan grepsebagai braket literal. Kutipan diperlukan untuk mencegah interpretasi backslash sebagai karakter khusus oleh shell.
¹ Spesifikasi POSIX .
bashtermasuk),!masih diperluas dalam tanda kutip ganda, hanya tanda kutip tunggal yang akan menghentikan ekspansi (atau mematikan opsi shell).