लूप के लिए unset वैरिएबल के लिए परीक्षण


0

मैंने एक स्क्रिप्ट लिखी है जो एक फ़ाइल को पार्स करती है और फ़ाइल के भीतर एक निश्चित चौड़ाई के अनुसार चर सेट करती है।

मैं तब प्रत्येक चर की जांच करना चाहता हूं और, यदि यह एक खाली क्षेत्र है, तो "0" पर सेट करें। इसका एक सरल रूपांतर होगा:

one=1  
two=""  
three=3  
four=""  

for num in $one $two $three $four  
do  
   echo num is $num  
done

मुझे इसका एक आउटपुट देता है:

num is 1   
num is 3

मुझे जो करना है वह कोड है if $two is null then two=0

मैं उसे कैसे कर सकता हूँ?


चेतावनी: ड्राइव-बाय सवाल। ओपी ने अपना (या उसका) खाता बनाया, यह प्रश्न 18 मिनट बाद पूछा, और दो मिनट पहले गायब हो गया (प्रश्न 15 दिसंबर को 15 दिसंबर को पूछा गया; उपयोगकर्ता अंतिम बार 9 दिसंबर को 15:28 पर देखा गया), जाहिरा तौर पर टूर के बिना।
स्कॉट

जवाबों:



0

आपका सवाल बहुत मायने नहीं रखता। आप कहें तो सबसे पहले

one=1
two=""
three=3
four=""

for num in $one $two $three $four
do
    

तब forकथन की व्याख्या की जाती है

for num in 1  3

और इसलिए वहाँ के साथ केवल दो पुनरावृत्तियों, कर रहे हैं numके बराबर 1और 3। यदि आप (अशक्त), और (अशक्त) के numबराबर चार पुनरावृत्तियाँ चाहते हैं , तो आपको कहने की आवश्यकता है13

for num in "$one" "$two" "$three" "$four"

जब तक आपके पास एक अच्छा कारण नहीं है, आपको शेल चर संदर्भों को उद्धृत करना चाहिए, और आपको यकीन है कि आप जानते हैं कि आप क्या कर रहे हैं।

इसलिए,

for num in "$one" "$two" "$three" "$four"
do
    echo "num is $num"
done

में परिणाम होगा

num is 1
num is 
num is 3
num is 

अब, अगर आप चाहते हैं कहने के लिए परिणाम 1, 0, 3, 0, यह कहने का एक सरल बात है

for num in "$one" "$two" "$three" "$four"
do
    if [ "$num" = "" ]
    then
        num=0
    fi
    echo "num is $num"
done

ध्यान दें कि

  • आपके पास पहले और बाद में व्हाट्सएप होना चाहिए [,
  • आपके पास पहले और बाद में व्हाट्सएप होना चाहिए =,
  • आपके पास ] (और इसके बाद, यदि इसके बाद कुछ और है), और इससे पहले आपके पास व्हाट्सएप होना चाहिए , और
  • fiहै ifपीछे की ओर से लिखे गए।

लेकिन आपके प्रश्न का शीर्षक "परेशान चर" का उल्लेख करता है।  twoऔर fourकर रहे हैं सेट एक खाली स्ट्रिंग के लिए; fiveऔर six(और orange, pumpkin, tiger, और अन्य संभावित चर नाम की एक अर्ध अनंत सूची) कर रहे हैं सेट नहीं । एक अंतर है। अगर है कि क्या आप में रुचि रखते हैं, तो आप, एक अलग सवाल पूछने के लिए की जरूरत है क्योंकि अगर आप ऐसा करेंगे

for num in "$one" "$two" "$three" "$four" "$five" "$six" "$orange" "$pumpkin" "$tiger"
do
    

तो यह भेद करने के लिए असंभव हो जाएगा five, six, orange, pumpkin, और tiger, से पुनरावृत्तियों twoऔर fourपुनरावृत्तियों - numसभी सात मामलों में एक खाली स्ट्रिंग पर सेट कर दिया जाएगा। आप परीक्षण करने की आवश्यकता होगी $fourऔर $fiveसीधे (आदि) चर।

पुनश्च एक नया सवाल मत पूछो; एक खोज करो। इसका उत्तर पहले दिया जा चुका है।

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