printf %s\\n "$-"
จะแสดงรายการตัวเลือกตัวอักษรเดียวในสายเดียว
พารามิเตอร์นั้นยังสามารถใช้เช่น:
set -f -- ${-:+"-$-"}
echo *don\'t* *glob* *this*
set +f "$@"
เปลือกปิดการใช้งานครั้งแรกของ-f
การขยายตัว ilename พร้อมกันในขณะที่ประหยัดค่า$-
- ถ้าใด ๆ - $1
ใน ถัดไปจะไม่มี globs เกิดขึ้นและนามสกุล+f
ilename จะเปิดใช้งานอีกครั้งและอาจถูกปิดใช้งานด้วย
ตัวอย่างเช่นหาก-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
โดยไม่มีข้อโต้แย้งในเรื่องเดียวกัน ที่ ... อาจครอบคลุมถึงแม้ว่า ผมคิดว่ามี"$@"
- ซึ่งคุณจะต้องใส่ในอาร์เรย์แรกผมคิดว่าก่อนที่จะทำbash
set
Nope trap
นอกจากนี้ยังมี คนนี้ตลกเล็กน้อย ปกติ:
trap 'echo this is my trap' 0
(echo this is my subshell; trap)
... เพียงแค่จะพิมพ์นี้เป็น subshell ของฉันเพราะ subshell เป็นกระบวนการใหม่และได้รับชุดของตัวเองtrap
s - และอื่น ๆ ไม่ได้รับมรดกใด ๆtrap
s แต่ผู้ที่แม่ของมันได้อย่างชัดเจนไม่สนใจ - (ชอบ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
ทำงานเพื่อฉัน)