فصل 5. نقل‌قول

فهرست مطالب
5.1- نقل‌قول متغیرها
5.2- Escaping

نقل‌قول(کردن) فقط به معنای احاطه کردن یک رشته با علامت‌های نقل‌قول است. نتیجه این کار محافظت کاراکترهای خاص داخل رشته از تفسیر دوباره یا بسط به وسیله پوسته یا اسکریپت پوسته است. (یک کاراکتر در صورتی «خاص» است که دارای تفسیری غیر از معنای لفظی‌اش باشد. برای مثال، ستاره * در globbing و عبارتهای منظم نماینده یک کاراکتر عام است).

bash$ ls -l [Vv]*
 -rw-rw-r--    1 bozo  bozo       324 Apr  2 15:05 VIEWDATA.BAT
 -rw-rw-r--    1 bozo  bozo       507 May  4 14:25 vartrace.sh
 -rw-rw-r--    1 bozo  bozo       539 Apr 14 17:11 viewdata.sh

bash$ ls -l '[Vv]*'
ls: [Vv]*: No such file or directory

برخی برنامه‌ها و ابزارها، کاراکترهای خاص داخل یک رشته نقل‌قولی شده را دوباره تفسیر کرده یا بسط می‌دهند. یک استفاده با اهمیت نقل‌قول، محافظت از پارامتر خط فرمان در برابر پوسته، اما اجازه دادن به برنامه فراخواننده جهت بسط آن است.

bash$ grep '[Ff]irst' *.txt
file1.txt:This is the first line of file1.txt.
 file2.txt:This is the First line of file2.txt.

توجه کنید که ‎grep [Ff]irst *.txt‎ نقل‌قولی نشده هم تحت پوسته Bash کار می‌کند. [1]

نقل‌قول کردن همچنین می‌تواند اشتهای echo برای سطرهای جدید را سرکوب کند.

bash$ echo $(ls -l)
total 8 -rw-rw-r-- 1 bo bo 13 Aug 21 12:57 t.sh -rw-rw-r-- 1 bo bo 78 Aug 21 12:57 u.sh

bash$ echo "$(ls -l)"
total 8
 -rw-rw-r--  1 bo bo  13 Aug 21 12:57 t.sh
 -rw-rw-r--  1 bo bo  78 Aug 21 12:57 u.sh

یادداشت‌ها

[1]

مگراینکه فایلی به نام first در دایرکتوری کاری جاری وجود داشته باشد. بازهم یک دلیل دیگر برای نقل‌قول کردن. (با تشکر از، ‎Harald Koenig‎، برای اشاره کردن به این مورد.)