printf %s\\n "$-"
จะแสดงรายการตัวเลือกตัวอักษรเดียวในสายเดียว
พารามิเตอร์นั้นยังสามารถใช้เช่น:
set -f -- ${-:+"-$-"}
echo *don\'t* *glob* *this*
set +f "$@"
เปลือกปิดการใช้งานครั้งแรกของ-fการขยายตัว ilename พร้อมกันในขณะที่ประหยัดค่า$-- ถ้าใด ๆ - $1ใน ถัดไปจะไม่มี globs เกิดขึ้นและนามสกุล+filename จะเปิดใช้งานอีกครั้งและอาจถูกปิดใช้งานด้วย
ตัวอย่างเช่นหาก-fการขยาย ilename ถูกปิดใช้งานอยู่แล้วเมื่อค่าสำหรับ$-บันทึกครั้งแรกค่าที่บันทึกไว้จะเป็น(อย่างน้อย) :
f
และเมื่อsetมีการเรียกใช้อีกครั้งจะได้ผลเป็น:
set +f -f
ซึ่งเพิ่งจะทำให้คุณกลับมาทันทีที่คุณเริ่ม
set +o
จะแสดงรายการsetตัวเลือกตารางเชลล์ทั้งหมด(ดูคำตอบของ Jasonสำหรับความshoptสามารถ - คือคำหรือไม่ - ตัวเลือก)ในรูปแบบที่ปลอดภัยสำหรับการย้อนเข้าสู่เชลล์ ด้วยวิธีนี้คุณสามารถทำสิ่งต่อไปนี้
state=$(set +o)
set -some -crazy -options
eval "$state"
หากต้องการบันทึกเปลี่ยนแปลงและกู้คืนสถานะเชลล์ตัวเลือกตามลำดับ
ในการจัดการshoptไอออนและsetตัวเลือกตารางในครั้งเดียว:
state=$(set +o;shopt)
#do what you want with options here
eval "$state"
นอกจากนี้คุณยังสามารถโทรset โดยไม่มีข้อโต้แย้งใด ๆ เพื่อเพิ่มรายการตัวแปรที่ตั้งค่าไว้ทั้งหมดของเชลล์ในขณะนี้ และคุณสามารถ - ใน bash - เพิ่มคำสั่งtypeset -fpเพื่อรวมฟังก์ชันของเชลล์ที่ประกาศไว้ทั้งหมดในปัจจุบัน คุณสามารถรวมมันเข้าด้วยกันและevalเมื่อพร้อม คุณยังสามารถโทรได้aliasโดยไม่มีข้อโต้แย้งในเรื่องเดียวกัน ที่ ... อาจครอบคลุมถึงแม้ว่า ผมคิดว่ามี"$@"- ซึ่งคุณจะต้องใส่ในอาร์เรย์แรกผมคิดว่าก่อนที่จะทำbashset
Nope trapนอกจากนี้ยังมี คนนี้ตลกเล็กน้อย ปกติ:
trap 'echo this is my trap' 0
(echo this is my subshell; trap)
... เพียงแค่จะพิมพ์นี้เป็น subshell ของฉันเพราะ subshell เป็นกระบวนการใหม่และได้รับชุดของตัวเองtraps - และอื่น ๆ ไม่ได้รับมรดกใด ๆtraps แต่ผู้ที่แม่ของมันได้อย่างชัดเจนไม่สนใจ - (ชอบtrap '' INT )
อย่างไรก็ตาม:
trap 'echo this is my trap' 0
save_traps=$(trap)
trapทำตัวเป็นพิเศษเมื่อมันเป็นคำสั่งแรกและที่เดียวที่รันใน subshell การแทนที่คำสั่งโดยจะทำซ้ำรายการของพาเรนต์เชลล์ที่ตั้งค่าtrapsในปัจจุบันในรูปแบบซึ่งอ้างถึงเพื่อความปลอดภัยในการย้อนกลับไปยังเชลล์ และเพื่อให้คุณสามารถทำsave_traps, แล้ว setโดยไม่ขัดแย้ง - และทุกส่วนที่เหลือที่กล่าวมาแล้ว - จะสวยมากได้รับล็อคในทุกรัฐเปลือก คุณอาจต้องการเพิ่มexport -pและreadonly -pเรียกคืนแอ็ตทริบิวต์ var var ดั้งเดิมอย่างชัดเจน
อย่างไรก็ตามนั่นก็เพียงพอแล้ว
set +oและshopt? (เพื่อให้shoptสามารถเป็นคำที่settableใช้ในหน้าคนshoptableทำงานเพื่อฉัน)