printf %s\\n "$-"
एकल स्ट्रिंग में एकल अक्षर विकल्पों को सूचीबद्ध करेगा।
उस पैरामीटर का भी उपयोग किया जा सकता है:
set -f -- ${-:+"-$-"}
echo *don\'t* *glob* *this*
set +f "$@"
पहली बार शेल -filename विस्तार को अक्षम करने के लिए , साथ ही साथ $-- यदि कोई हो - के लिए मान को सहेजते हुए $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मेरे लिए काम करता है)