बैश निर्धारित करें कि क्या पैरामीटर चर ($ 1, $ 2, $ 3, आदि) निर्धारित किए गए हैं


1

मेरे द्वारा पढ़े गए कई पोस्ट में कई उत्तर हैं जो इसे कवर करते हैं, लेकिन मुझे समझ नहीं आता कि मैं वास्तव में क्या कर रहा हूं; यह हिट और मिस हुआ है।

मैं .sh स्क्रिप्ट के साथ काम कर रहा हूँ:

#!/bin/bash  
# init  

input=$1  
output=$(ping -c 1 "$input" 2>/dev/null)                
if [ $? -eq 0 ]; then                  
   ip=$(printf '%s' "$output" | gawk -F'[()]' '/PING/{print $2}'  2>/dev/null)     
   echo "$ip";                
   sleep 2              
else         
   echo "Host not found";      
fi         

मेरे द्वारा पढ़े गए पोस्टों में से कई ने इसे कवर किया है, और कई अलग-अलग विधियां हैं जो इसे पूरा करने के लिए उपयोग की जा सकती हैं, लेकिन मैं अभी भी वास्तव में समझ नहीं पा रहा हूं कि उनका उपयोग कैसे करें। मूल रूप से, मैं यह जांचने की कोशिश कर रहा हूं कि क्या चर "$ 1" एक तर्क द्वारा निर्धारित किया गया है, और कुछ इस तरह प्रदर्शित करें:

echo No argument given  

यदि वैरिएबल खाली है, तो केवल होस्ट को पिंग करने के बजाय। मेरा सवाल यह है: मुझे बिना जटिल चीजों के यह कैसे करना चाहिए?

मदद हमेशा की सराहना की है, अग्रिम धन्यवाद।

पुनश्च: मैं अभी भी काफी Linux के वातावरण के लिए नया हूँ, इसलिए मुझ पर आसान जाओ।


1
सुपर उपयोगकर्ता में आपका स्वागत है! अपने पद शीर्षक में "हल" जोड़ने की कोई आवश्यकता नहीं है। हल किए गए प्रश्नों को फ्रंट पेज पर स्वचालित रूप से अलग-अलग स्वरूपित किया जाता है।
एक्सल

जवाबों:


1

मैं भीख माँगने की जाँच जोड़ूँगा। विफलता के मामले में संदेश प्रदर्शित करना और बाहर निकलना।

#!/bin/bash  
# init  

if [ -z "$1" ]; then
  echo No argument given 
  exit
fi

input=$1  
output=$(ping -c 1 "$input" 2>/dev/null)                
if [ $? -eq 0 ]; then                  
   ip=$(printf '%s' "$output" | gawk -F'[()]' '/PING/{print $2}'  2>/dev/null)     
   echo "$ip";                
   sleep 2              
else         
   echo "Host not found";      
fi        

2
यह शायद इस मामले में प्रासंगिक नहीं है, लेकिन कभी-कभी आपको दिए गए पैरामीटर ( ScriptFile) और किसी पैरामीटर को स्पष्ट रूप से खाली स्ट्रिंग ( ScriptFile "" Param2 ...) में अंतर करने में सक्षम होने की आवश्यकता होती है : इस मामले में आपको $ # का उपयोग करने की आवश्यकता है , जैसा कि @Torre द्वारा सुझाया गया है।
AFH

1

यदि आप पास किए गए आर्ग की संख्या जानना चाहते हैं, तो $ # का उपयोग करें। ऐशे ही:

if [ $# -eq 0 ]; then
  echo "No argument given"
fi

उम्मीद है की वो मदद करदे।

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