نقلقول(کردن) فقط به معنای احاطه کردن یک رشته با علامتهای نقلقول است. نتیجه این کار محافظت کاراکترهای خاص داخل رشته از تفسیر دوباره یا بسط به وسیله پوسته یا اسکریپت پوسته است. (یک کاراکتر در صورتی «خاص» است که دارای تفسیری غیر از معنای لفظیاش باشد. برای مثال، ستاره * در 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، برای اشاره کردن به این مورد.) |