$ -1 प्रदर्शन क्या प्रतिध्वनित करता है?


14

क्या के उत्पादन करता है echo $-1, echo $-2, echo $-3.. क्या मतलब है?

मेरे एक लिनक्स बॉक्स पर, यह मुझे दिखाता है:

echo $-1
imsBEl1
echo $-2
imsBEl2

और एक अन्य लिनक्स बॉक्स पर, यह दिखाता है:

echo $-1
himBH1
echo $-2
himBH2

क्या वे कुछ स्मृति स्थानों या किसी और चीज़ की मैपिंग कर रहे हैं?


1
शीर्षक साइडबार में निम्नलिखित समस्या को प्रदर्शित कर रहा है: meta.stackexchange.com/q/229363/205964
IQAndreas

मैंने एक प्रस्तावित संपादन जोड़ा, जिसने इसे ठीक करने का प्रयास किया, लेकिन मुझे जल्द ही पता चला कि यह केवल साइडबार है जो मैथजैक्स को प्रस्तुत करता है, जिसका अर्थ है कि जब शीर्षक इस पृष्ठ पर है, तो यह अनावश्यक बैकस्लैश हो जाता है।
IQAndreas

जवाबों:


19

POSIX को $ - के रूप में परिभाषित किया गया:

-

(हाइफ़न।) मौजूदा विशेष फ़्लैग (एक अक्षर में लिखे गए एकल-अक्षर विकल्प नाम) का विस्तार, आह्वान पर निर्दिष्ट विशेष सेट-इन कमांड द्वारा या शेल द्वारा निहित रूप में निर्दिष्ट है।

तो $-आपके शेल पर अलग-अलग आधार हो सकते हैं या आप इसे कैसे लागू कर सकते हैं।

1या 2यहाँ अलग टोकन हैं। जब शेल निर्विवाद रूप से दिखाई देता है $, तो यह पैरामीटर विस्तार, कमांड प्रतिस्थापन या अंकगणितीय विस्तार के लिए किसी भी उम्मीदवार की शुरुआत की पहचान करेगा। इसने देखा $-और इसका विस्तार किया, बाकी को अपरिवर्तित छोड़ दिया।

आप अधिक विवरण के लिए टोकन मान्यता अनुभाग देख सकते हैं ।



11

मिरोस्लाव के जवाब में जोड़ना:

echo $-वर्तमान शेल के विकल्प (बिना -उपसर्ग के) प्रिंट करता है । 1 और 2 अतिरिक्त असंबंधित टोकन हैं।

इसका मतलब है कि ये विकल्प हैं, क्रमशः प्रत्येक मशीन के लिए।

imsBEl
himBH

मैंने प्रत्येक झंडे के अर्थ पर शोध किया है और नीचे दिए गए अर्थों को संकलित किया है, जिसमें मामूली विरोधाभास है।

-मैं

-I विकल्प मौजूद है, तो शेल इंटरैक्टिव है।

-म

मॉनिटर मोड। नौकरी पर नियंत्रण सक्षम है।

-B

खोल ब्रेस विस्तार (ब्रेस विस्तार देखें ) करता है। यह डिफ़ॉल्ट रूप से चालू है।

-s

यदि -s विकल्प मौजूद है, या यदि विकल्प प्रसंस्करण के बाद कोई तर्क नहीं रहता है, तो मानक इनपुट से कमांड पढ़े जाते हैं। यह विकल्प इंटरेक्टिव शेल को लागू करते समय स्थितीय मापदंडों को सेट करने की अनुमति देता है।

-इ

errtrace

-l

बैश अधिनियम बनाएं जैसे कि इसे एक लॉगिन शेल के रूप में लागू किया गया था

-h

hashall

-एच इतिहास विस्तार

यह सुविधा इंटरैक्टिव गोले के लिए डिफ़ॉल्ट रूप से सक्षम है।


3

मौजूदा उत्तरों पर विस्तार करने के लिए, कोशिश करें echo "${-1}"और echo "${-2}"- आपको एक "खराब प्रतिस्थापन" त्रुटि मिलेगी क्योंकि -1एक चर नाम के रूप में उपयोग करने के बजाय हाइफ़न का उपयोग एक मान को प्रतिस्थापित करने के लिए किया जाता है यदि अपरिभाषित होने से पहले चर नाम । उदाहरण के लिए:

$ unset foo
$ echo "${foo-bar}"
bar
$ foo=test
$ echo "${foo-bar}"
test
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.