อย่างน้อยคุณสามารถบันทึกตัวเลือกบางส่วนในตัวแปร:
opts=$(echo --{ignore-case,word-regexp,count,exclude='"sys*.*"'})
การทดสอบมีความสำคัญเนื่องจากการปิดบังอาจทำได้ยาก:
echo $opts
--ignore-case --word-regexp --count --exclude="sys*"
grep $opts bytes *.log
เนื่องจากมีหลายทางเลือกเช่นการใช้ประวัติการใช้นามแฝงการใช้ฟังก์ชั่นจึงไม่มีกรณีการใช้งานที่ชัดเจนที่ฉันสามารถนึกได้ การใช้ตัวเลือกที่ซับซ้อนร่วมกันระหว่างโปรแกรมที่แตกต่างกันมีน้อยดังนั้นสำหรับโซลูชัน ad-hoc สำหรับเชลล์แบบโต้ตอบนามแฝงดูเหมือนจะเป็นวิธีที่ดีกว่า:
alias cgrep='grep --ignore-case --word-regexp --count --exclude="sys*"'
cgrep bytes *.log
ตัวอย่างของคุณ
VAR=rsync -avz --{partial,stats,delete,exclude=".*"}
ไม่สามารถใช้งานได้เนื่องจากการมอบหมายนั้นสิ้นสุดที่ช่องว่างแรก คุณต้องปิดบังช่องว่าง:
VAR='rsync -avz --{partial,stats,delete,exclude=".*"}'
สิ่งที่ค่อนข้างอันตรายสำหรับการทดสอบโดยมีตัวเลือก - ลบใช่ไหม? เนื่องจากตัวเลือกอาจมี "," อีกครั้งและเครื่องหมายคำพูดเดี่ยวการปิดบังจึงอาจทำได้ยากในไม่ช้า ฉันจะไปหานามแฝงหรือพึ่งพาประวัติ
นามแฝงสามารถเก็บไว้ในไฟล์ ~ / .bashrc เพื่อใช้อย่างต่อเนื่องในหลาย ๆ เซสชัน ฟังก์ชั่นสามารถเก็บไว้ใน bashrc ได้เช่นกัน แต่คุณต้องการเพียงแค่ถ้าคุณต้องการจัดการพารามิเตอร์ที่ส่งผ่านไปยังฟังก์ชั่นที่จะได้รับการประเมินในนั้น