ฉันค่อนข้างใหม่กับการเขียนสคริปต์ Bash ฉันมี "testcript" ซึ่งฉันใช้เป็นพื้นฐานสำหรับสคริปต์ขั้นสูง / มีประโยชน์มากขึ้น:
#!/bin/bash
files=$1
for a in $files
do
echo "$a"
done
เมื่อฉันเรียกสิ่งนี้โดยไม่ใส่เครื่องหมายอัญประกาศมันก็แค่หยิบไฟล์หนึ่งไฟล์ในไดเรกทอรี:
testscript *.txt
แต่เมื่อฉันเรียกมันด้วยเครื่องหมายคำพูดมันทำงานได้อย่างถูกต้องและเลือกไฟล์ข้อความทั้งหมด:
testscript '*.txt'
เกิดขึ้นที่นี่คืออะไร?
for a in "$@"; do
(หรือfor a; do
) ในบทของคุณจึงออกจาก globbing กับเปลือกนอกไม่ได้ที่จะออกจากคำพูด