Оболонка може перетворити командний рядок перед виконанням команди. І оболонка, і grepможе використовувати цитування, щоб видалити особливе значення деяких символів. Тим не менш, grepі снаряди мають різні особливі символи. Більше того, нерозроблені спеціальні символи, які не були результатом існуючого розширення, видаляються оболонкою перед виконанням команди.
echo '[]' | grep '[]'
Оболонка передає аргумент , []щоб grepі він обробляється як спотворене вираз кронштейна grep.
echo '[]' | grep \[]
Вище ми можемо побачити подібний випадок. Зворотна косою рисою видаляється і []передається як аргумент grep. grepрозпізнає вираз неправильної форми дужки.
echo '[]' | grep '\[]'
Нарешті, у цьому випадку лапки видаляються оболонкою і \[]передаються як аргумент, grepале в даному конкретному випадку ¹ \[інтерпретується grepяк буквальна дужка. Цитати потрібні для запобігання інтерпретації зворотної косої риси як оболонки спеціального символу.
¹ специфікація POSIX .
bashвключено)!все ще розгорнуто в подвійних лапках, лише окремі лапки зупиняють його розширення (або вимикають варіант оболонки).