printf %s\\n "$-"
एकल स्ट्रिंग में एकल अक्षर विकल्पों को सूचीबद्ध करेगा।
उस पैरामीटर का भी उपयोग किया जा सकता है:
set -f -- ${-:+"-$-"}
echo *don\'t* *glob* *this*
set +f "$@"
पहली बार शेल -f
ilename विस्तार को अक्षम करने के लिए , साथ ही साथ $-
- यदि कोई हो - के लिए मान को सहेजते हुए $1
। अगला, कोई +f
ग्लब्स नहीं होता है, और अंतिम ilename विस्तार एक बार फिर से सक्षम है, और संभवतः अक्षम भी।
उदाहरण के लिए, यदि -f
पहले से ही $-
सहेजे गए मान के लिए ilename का विस्तार पहले से ही अक्षम था, तो उसका सहेजा गया मान होगा (कम से कम) :
f
और इसलिए जब set
फिर से चलाया जाता है, तो यह काम करता है:
set +f -f
जो आपको अभी वापस वहीं डालता है जहां आपने शुरू किया था।
set +o
सभी set
टेबल शेल विकल्पों को सूचीबद्ध करेंगे ( सक्षम के लिए जेसन का जवाब देखें 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
बिना भी कॉल कर सकते हैं - शेल के लिए पुनरावृत्ति के लिए उद्धृत भी। और आप कर सकते हैं - पार्टी की योजना में - इसके अलावा कमांड typeset -fp
को भी वर्तमान में घोषित सभी शेल कार्यों में शामिल करें। आप यह सब एक साथ गांठ कर सकते हैं और eval
तैयार होने पर। तुम भी alias
अधिक के लिए तर्कों के बिना कॉल कर सकते हैं । हालांकि ... यह इसे कवर कर सकता है, हालांकि। मुझे लगता है कि वहाँ है "$@"
- जो आपको bash
पहले एक सरणी में रखना होगा , मुझे लगता है, करने से पहले set
।
नहीं, वहाँ भी है trap
। यह थोड़ा मजाकिया है। आम तौर पर:
trap 'echo this is my trap' 0
(echo this is my subshell; trap)
... बस प्रिंट करेंगे यह मेरा सबस्क्रिप्शन है क्योंकि सबस्क्रिप्शन एक नई प्रक्रिया है और इसका अपना सेट मिलता है trap
- और इसलिए किसी भी trap
एस को इनहेरिट नहीं किया जाता है, लेकिन जिन्हें इसके माता-पिता ने स्पष्ट रूप से अनदेखा किया है - (जैसे trap '' INT
) ।
तथापि:
trap 'echo this is my trap' 0
save_traps=$(trap)
trap
विशेष रूप से तब व्यवहार करता है जब यह कमांड सबस्टेशन में पहला और एकमात्र कमांड रन होता है जो इस प्रकार उप-भाग में होता है कि यह वर्तमान traps
में एक प्रारूप में सेट किए गए पैरेंट शेल की सूची को पुन: पेश करेगा जो शेल के लिए सुरक्षित पुनरावृत्ति के लिए उद्धृत है। और इसलिए आप कर सकते हैं save_traps
, तो set
बिना तर्क के - और बाकी सभी पहले से ही उल्लेख किया गया है - बहुत ज्यादा सभी खोल राज्य पर ताला पाने के लिए। आप मूल शेल संस्करण विशेषताओं को स्पष्ट रूप से जोड़ना export -p
और readonly -p
पुनर्स्थापित करना चाह सकते हैं , हालांकि।
वैसे भी, यह काफी है।
set +o
औरshopt
? (जैसा किshopt
एक शब्द होने में सक्षम है,settable
मैन पेज में उपयोग किया जाता है, इसलिएshoptable
मेरे लिए काम करता है)