मैं इसके बराबर खोजना चाहता हूं
cmd 1 && cmd 2 && ... && cmd 20
लेकिन for
जैसे लूप के भीतर व्यक्त आदेशों के साथ
for i in {1..20}
do
cmd $i
done
पहले के बराबर को खोजने के लिए आप दूसरी अभिव्यक्ति में बदलाव के लिए क्या सुझाव देंगे?
मैं इसके बराबर खोजना चाहता हूं
cmd 1 && cmd 2 && ... && cmd 20
लेकिन for
जैसे लूप के भीतर व्यक्त आदेशों के साथ
for i in {1..20}
do
cmd $i
done
पहले के बराबर को खोजने के लिए आप दूसरी अभिव्यक्ति में बदलाव के लिए क्या सुझाव देंगे?
जवाबों:
आपके मूल अनुक्रम के बराबर होगा:
for i in {1..20}
do
cmd $i || break
done
अमित के जवाब के साथ अंतर यह है कि स्क्रिप्ट बाहर नहीं निकलेगी, यानी संभावित कमांड निष्पादित करेगी जो अनुक्रम / लूप का पालन कर सकती है। ध्यान दें कि पूरे लूप की वापसी की स्थिति हमेशा मेरे सुझाव के साथ सही होगी, यह आपके मामले में प्रासंगिक होने पर तय किया जा सकता है।
यदि आप एक गंदा एक-लाइन समाधान चाहते हैं, तो आप एक कमांड बना सकते हैं और इसे बैश करने के लिए भेज सकते हैं।
echo "cmd "{1..20}" &&" : | bash
यदि आप उनमें से एक में विफल रहे तो आप लूप से बाहर निकल सकते हैं
for i in {1..55}; do
if ! cmd $i; then
exit 1
fi
done
break
वहाँ कानूनी? मुझे पूरा यकीन है कि if
बयान में हस्तक्षेप नहीं होगा ..
इस तरह से मैं बिना उपयोग किए टर्मिनल में अपने कार्यों को निष्पादित करता हूं &&
for i in google.com yahoo.com;do ping -c1 $i;echo $i;done
इसी तरह आपको इस कमांड को स्क्रिप्ट में रखना है
for i in google.com yahoo.com
do echo $i;ping -c1 $i;
done
दोनों मुझे एक ही आउटपुट दे रहे हैं
google.com पिंग google.com (172.217.26.174) 56 (84) बाइट्स डेटा। Google.com से 64 बाइट्स (172.217.26.174): icmp_seq = 1 ttl = 56 समय = 259 एमएस
--- google.com पिंग आँकड़े --- 1 पैकेट प्रेषित, 1 प्राप्त, 0% पैकेट नुकसान, समय 0ms आरटी मिनट / एवीजी / अधिकतम / mdev = 259.794 / 259.794 / 259.794 / 0.000 एमएस yahoo.com पिंग yahoo.com ( 98.138.253.109) 56 (84) डेटा का बाइट्स। Yahoo.com से 64 बाइट्स (98.138.253.109): icmp_seq = 1 ttl = 51 समय = 398 मि।
--- yahoo.com पिंग के आँकड़े --- 1 पैकेट प्रेषित, 1 प्राप्त, 0% पैकेट हानि, समय 0ms आरटी मिनट / एवीजी / अधिकतम / महादेव = 398.974 / 398.974 / 398.974 / 0.000 एमएस
cmd && cmd