तुम सच में एक सरणी की क्या ज़रूरत है
बैश
$ ipAddress="10.78.90.137;10.78.90.149"
$ IFS=";"
$ set -- $ipAddress
$ echo $1
10.78.90.137
$ echo $2
10.78.90.149
$ unset IFS
$ echo [email protected] #this is "array"
यदि आप डब्ल्यू चींटी अपने विधि के संबंध में सरणी
$ a=([email protected])
$ echo ${a[0]}
10.78.90.137
$ echo ${a[1]}
10.78.90.149
@OP में लाना,: एक अंतरिक्ष
$ IFS=" "
$ n=($(grep -i ipaddress file | cut -d'=' -f2 | tr ';' ' ' | sed 's/"//g'))
$ echo ${n[1]}
10.78.90.149
$ echo ${n[0]}
10.78.90.137
$ unset IFS
इसके अलावा करने के लिए अपने भारतीय विदेश सेवा निर्धारित करते हैं, तो कई उपकरणों का उपयोग करने की आवश्यकता नहीं है। तुम सिर्फ awk का उपयोग कर सकते हैं, या बस बैश शेल
#!/bin/bash
declare -a arr
while IFS="=" read -r caption addresses
do
case "$caption" in
ipAddress*)
addresses=${addresses//[\"]/}
arr=(${arr[@]} ${addresses//;/ })
esac
done < "file"
echo ${arr[@]}
उत्पादन
$ more file
foo
bar
ipAddress="10.78.91.138;10.78.90.150;10.77.1.101"
foo1
ipAddress="10.78.90.137;10.78.90.149"
bar1
$./shell.sh
10.78.91.138 10.78.90.150 10.77.1.101 10.78.90.137 10.78.90.149
घूर रहा
$ n=($(gawk -F"=" '/ipAddress/{gsub(/\"/,"",$2);gsub(/;/," ",$2) ;printf $2" "}' file))
$ echo ${n[@]}
10.78.91.138 10.78.90.150 10.77.1.101 10.78.90.137 10.78.90.149
मानों को बाद में स्क्रिप्ट में उपयोग किया जाता है। अगर वे किसी सरणी में संग्रहीत होते हैं तो यह फिर से शुरू करना और उन पर अन्य परिचालन करना आसान बनाता है, इसलिए उन्हें एक सरणी में स्टोर करने की आवश्यकता होती है। आपके द्वारा वर्णित विधि में मेरी मदद करनी चाहिए। धन्यवाद! क्या आप कृपया अपने विचार साझा कर सकते हैं कि मैं जिस विधि का उपयोग कर रहा हूं वह असफल रहा है? – calvinkrishy
मेरा संपादन देखें। एक तरीका आईएफएस सेट करना है। – ghostdog74
धन्यवाद। आज कुछ नई चालें सीख लीं! – calvinkrishy