คำสั่งส่วนใหญ่ที่ยอมรับ--foo
ว่าเป็นตัวเลือกยอมรับ--
ด้วยตัวเองว่าเป็น "จุดสิ้นสุดของตัวเลือกจุดเริ่มต้นของการขัดแย้ง" - ดังนั้นคุณสามารถทำได้:
printf -- "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test
แต่คำตอบที่เฉพาะเจาะจงมากขึ้นสำหรับตัวอย่างที่แน่นอนของคุณคืออาร์กิวเมนต์แรกของ printf คือตัวระบุรูปแบบและคุณกำลังทำสิ่งที่ยากเกินความจำเป็นโดยไม่ใช้ printf สำหรับความสามารถในการจัดรูปแบบ นี่จะเป็นวิธีที่ดีกว่าในการทำสิ่งที่คุณต้องการ:
printf "%s\n" --no-color --format-doc --no-profile >> ~/.rspec-test
นั่นบอกให้ printf รับแต่ละอาร์กิวเมนต์ที่ได้รับและพิมพ์ตามด้วยบรรทัดใหม่ ง่ายกว่าการทำซ้ำ\n
ตัวเองและหลีกเลี่ยง--
ปัญหานำที่คุณเผชิญ และมันก็ไม่จำเป็นต้องหลีกเลี่ยง%
สัญญาณใด ๆที่สายของคุณอาจมี
สำหรับวิธีการทำหลายบรรทัดด้วยecho
คุณสามารถใช้:
echo -ne "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test
หรือมากขึ้นพกพา:
{ echo --no-color; echo --format-doc; echo --no-profile; } >> ~/.rspec-test
หรือใช้แมวพร้อมกับ here-doc:
cat >>.rspec-test <<EOF
--no-color
--format-doc
--no-profile
EOF