set
एक शेल बिल्डिन है , जिसका उपयोग सेट और अनसेट शेल विकल्पों और स्थितीय मापदंडों के लिए किया जाता है।
तर्कों के बिना, set
सभी शेल वैरिएबल (वर्तमान सत्र में पर्यावरण चर और वैरिएबल दोनों) को प्रिंट करेंगे जो वर्तमान लोकल में क्रमबद्ध हैं ।
आप बैश डॉक्यूमेंटेशन भी पढ़ सकते हैं ।
कुछ कैवियट हैं।
set "$var"
को var
मान प्रदान करेगा $1
। यदि इसके $var
साथ -
या शुरू होता है +
, तो $var
सामग्री को शेल विकल्पों के अनुक्रम के रूप में माना जाता था। यदि $var
कोई अमान्य विकल्प हैं, तो अधिकांश POSIX गोले त्रुटि को प्रिंट करेंगे। yash
और zsh
में sh
, ksh
अनुकरण केवल त्रुटि मुद्रण नहीं कर रहे हैं, लेकिन यह भी मान्य विकल्प सेट। जबकि yash
स्टॉप पहले अमान्य विकल्प पर विकल्प की स्थापना, zsh
उन सभी को आवंटित करेगा। इन yash
:
var=-fxd; set "$var"
f
और x
में पेश करेंगे $-
, जबकि:
var=fdx; set "$var"
में ही f
मौजूद है $-
। दोनों मामलों में, f
और में और एमुलेशन के साथ x
उपस्थित होगा ।$-
zsh
sh
ksh
आपको उस स्थिति से बचाने के लिए, आप --
पहले पैरामीटर के रूप में स्थितीय पैरामीटर सेट करने के लिए पास कर सकते हैं, यहां तक कि इसके साथ शुरू -
या +
:
var=-fdx; set -- "$var"
आवंटित करेगा $var
करने के लिए $1
भले ही उसकी सामग्री,।
set --
आगे किसी भी तर्क के बिना सभी स्थिति मापदंडों को परेशान करेगा।
यदि पहला तर्क है -
, तो व्यवहार अनिर्दिष्ट है। सभी ज्ञात POSIX गोले परेशान x
और v
विकल्प (को छोड़कर posh
), और स्थितिगत -
मापदंडों के बाद कुछ भी असाइन करेंगे :
set -xv - -f
आवंटित करेगा -f
करने के लिए $1
। set -
ने भी स्थितिगत मापदंडों को परेशान नहीं किया। शिल्पी ओश भी ऐसा ही व्यवहार करते हैं। हिरलूम श न परेशान v
और x
विकल्प।
एकमात्र POSIX शेल अपवाद है yash
, जो -
पहले स्थितीय पैरामीटर के रूप में व्यवहार करता है:
$ yash -c 'set -xv - -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
+ printf %s\n - -f
-
-f
+ printf %s\n cvx
cvx
यदि -
तर्क में मौजूद हो तो भी शिल्ली कुछ नहीं कर रहा है:
$ schily-sh -c 'set -v - -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
<blank line>
s
$ schily-sh -c 'set -v -- -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
-f
vs