लिनक्स: स्थानीय चर के लिए सेट कमांड


9

मैं स्थानीय / पर्यावरण चर और निर्यात / सेट कमांड को समझने की कोशिश कर रहा हूं।

$ set FILEM="razrax"
$ echo $FILEM

$ FILEN="test"
$ echo $FILEN
test

कृपया बताएं कि echo $FILEMखाली स्ट्रिंग क्यों लौटाता है

जवाबों:


21

आप के bashसाथ भ्रमित कर रहे हैं csh।

में bashमें की तरह किसी भी बॉर्न-जैसा शेल, setकरने के लिए आदेश है सेट विकल्प (खोल विन्यास सेटिंग्स की तरह -f, -C, -o noclobber...) और स्थितीय मानकों ( $1, $2...)।

set FILEM="razrax"

सेट $1करने के लिए FILEM=razrax।

$ set FILEM="razrax"
$ echo "$1"
FILEM=razrax

बॉर्न जैसे गोले में चर असाइनमेंट के लिए सिंटैक्स है:

VAR=value

(कोई स्थान दोनों तरफ से अनुमति नहीं है =)।

kshऔर कुछ अन्य बॉर्न जैसे गोले (mksh, pdksh, zsh) के साथ भी सरणी चर असाइन कर सकते हैं set:

set -A array value1 value2

zsh, bash, yashऔर के नए संस्करण kshउपयोग इस वाक्य रचना के बजाय:

array=(value1 value2)

इसके विपरीत, cshया में tcsh, वाक्यविन्यास है:

set VAR = value
set array = (value1 value2)

( =वैकल्पिक के आसपास रिक्त स्थान )।

में rc/ esगोले:

VAR = value
array = (value1 value2)

( =वैकल्पिक के आसपास रिक्त स्थान )।


अच्छे उत्तर के लिए धन्यवाद। केवल एक चीज जो मुझे समझ नहीं आ रही है कि अंतर विकल्प और स्थानीय चर "सेट करने के लिए विकल्प सेट करने के लिए कमांड" क्या है?
— इजावा

@ जय, विकल्प (उसी के अनुसार ) set -Cसेट करता -Cहै set -o noclobber। (और , 1, ( , यदि पहले सेट हो तो) परेशान हैं) को set fooअसाइन करता fooहै । विवरण के लिए अपने शेल के मैनुअल की जाँच करें। $1$#$2$3
— स्टीफन चेज़लस

1
मुझे समझ नहीं आ रहा है कि विकल्प क्या हैं। क्या ये विकल्प मुख्य (स्ट्रिंग [] args) जैसे कार्यक्रमों को भेजे जाते हैं? और क्या? वे कहाँ उपयोग किए जाते हैं?
— इजावा

1
@ जयवा, वे सेटिंग्स हैं जो शेल के व्यवहार को प्रभावित करते हैं। फिर, RTFM
— स्टीफन Chazelas
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.