मेरे बैश मैजिक को अपग्रेड करने की कोशिश कर रहा हूं। इस आदेश को समझने में मदद करें: bash -s स्थिर


18

ठीक है, इसलिए मैं अपने मैक पर आरवीएम स्थापित करने के लिए एक ट्यूटोरियल के माध्यम से काम कर रहा हूं। bash कमांड कर्ल के माध्यम से आरवीएम प्राप्त करने के लिए है

curl -L https://get.rvm.io | bash -s stable

मैं स्थान rvm.io पर पहले आधे कर्ल कमांड को समझता हूं, और इसका परिणाम बाद के बैश कमांड को दिया जाता है, लेकिन मुझे यकीन नहीं है कि वह कमांड क्या कर रहा है। मेरे सवाल:

-s: im हमेशा कैसे इन का उल्लेख करने के बारे में उलझन में। यह किस प्रकार की बात है: एक कमांड लाइन तर्क? एक स्विच? कुछ और?

-s: यह क्या कर रहा है? मैंने लगभग आधे घंटे तक गुगली की है, लेकिन यह सुनिश्चित नहीं किया है कि इसे कैसे संदर्भित किया जाए, यह मुश्किल है।

स्थिर: यह क्या है?

tl; dr: मुझे कमांड बैश -s को स्थिर समझने में मदद करें

इस पोस्ट का जवाब देने वालों के लिए, मैं एक दिन के लिए आप के रूप में बैश साक्षर होना चाहता हूं। तब तक, इस तरह के खुद के रूप में आप की मदद के लिए धन्यवाद!

जवाबों:


22

-sबात एक विकल्प कहा जाता है। आपके मामले में, इसका मतलब है कि bashपहले स्थितीय पैरामीटर सेट के साथ निष्पादित किया जाएगा । यदि आप उसके साथ खेलना चाहते हैं:

$ bash -s let us set some positional parameters just for fun
$ # doh? nothing seemed to happen
$ # In fact here we're in a new instance of bash with the parameters set. Look:
$ echo "$3"
set
$ echo "$5"
positional
$ # Get it?
$ printf "%s\n" "$@"
let
us
set
some
positional
parameters
just
for
fun
$ # Amazing!
$ # Let's get out of here!
$ exit
$ # (back to previous bash session)
$

आपके मामले में, कर्ल के माध्यम से डाउनलोड की गई स्क्रिप्ट को भेजा जाता है bash(इसलिए इसे निष्पादित किया जाएगा) और इसमें पहला स्थितीय पैरामीटर सेट किया जाएगा stable

यदि कभी आप उन विकल्पों के साथ फंस जाते हैं जिन्हें आप नहीं जानते कि वे क्या करते हैं: man bashऔर फिर /-sयह टाइप करें या कम से कम आपको उस स्थान पर ले जाएगा जहाँ -sविकल्प का वर्णन किया गया है। या यदि आप जानना चाहते हैं कि -uविकल्प क्या करता है sed: man sedऔर फिर टाइप करें /-u

उम्मीद है की यह मदद करेगा!


एक "स्थितिगत पैरामीटर
माइकस्किंकल

2
@ मायकेसिंकेल: संदर्भ देखें । स्थितीय मापदंडों चर अंक, जैसे द्वारा प्रदर्शित किया जाता है, $1, $8। आप उन्हें सीधे सेट नहीं कर सकते। जब आप किसी प्रोग्राम या फ़ंक्शन को कॉल करते हैं तो वे स्वचालित रूप से सेट हो जाते हैं। एक समारोह के साथ उदाहरण के लिए fun() { echo "Parameter 2 is $2"; }:। फिर कोशिश करो fun hello worldऔर fun "hello gniourf" "how are you?"
गनीउर_ग्निउरफ

ठीक है शुक्रिया। लेकिन अभी भी भ्रमित; यह -sविकल्प का उपयोग नहीं करने से कैसे अलग है ?
माइकस्किंकल

1
-sविकल्प के बिना @MikeSchinkel : फ़ाइल केbash stable लिए दिखेगा और इसे निष्पादित करने का प्रयास करेगा। विकल्प के साथ :: निष्पादित करेगा जो उसके स्टड पर आता है, सेट के साथ । stable-sbash -s stablestable$1
गनीउर_ग्निउरफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.