सवाल जबकि शैल स्क्रिप्ट में लूप सहायता [बंद]


मैं शैल स्क्रिप्टिंग के लिए नया हूं इसलिए मैं शेल स्क्रिप्ट फॉर्म में लूप्स का उपयोग करने के बारे में उत्सुक हूं।

मुझे पता है कि एक चर घोषित करने और जावा में थोड़ी देर के लूप का उपयोग कैसे करें

int num = 0;
while(num <= 10)
{
    System.out.println(num)
    num = num + 1
}

लेकिन मुझे नहीं पता कि वेरिएबल्स कैसे घोषित करें और शेल स्क्रिप्ट में थोड़ी देर में उन्हें इस्तेमाल करें।


1
2017-10-27 20:22


मूल


एमएम ... क्यों एक डेबियन टैग? - Braiam
@ ब्रायम टैग हटाया जा सकता है, यह एक सामान्य प्रोग्रामिंग प्रश्न है (इसे एसओ पर भी पोस्ट किया जा सकता है) - kiri


जवाब:


आप एक का उपयोग कर ज्यादा खुश हो जाएगा for इसके बजाय लूप (आपके उदाहरण के अनुसार)

for i in {0..10}; do
    echo "$i"
done

अगर तुम जरूर का उपयोग while लूप, निम्नलिखित पर विचार करें

i=0
while [[ $i -le 10 ]]; do
    echo "$i"
    i=$((i+=1))
done

1
2017-10-27 20:49





ऐसा करने के कई तरीके हैं, लेकिन शेल स्क्रिप्ट जो आपके जावा उदाहरण के सबसे करीबी दर्पण है यह है:

num=0
while test $num -le 10; do
    echo $num
    num=$((num+1))
done

इसे प्राप्त करने के लिए एक और 'खोल-आश' तरीके होंगे

printf '%s\n' {0..9}

लेकिन ध्यान दें कि {0..9} निर्माण एक 'bashism' है, जो मानक (POSIX) खोल में काम नहीं करेगा।


3
2017-10-27 20:29



मैंने इस उदाहरण का इस्तेमाल किया और मुझे एक त्रुटि मिली। "पंक्ति 4: संख्या: कमांड नहीं मिला। - Schmidty15
ओह मुझे जोड़ना चाहिए, जब मैं fileName.sh फ़ाइल निष्पादित करता हूं तो मैं bash fileName.sh का उपयोग करता हूं। फ़ाइल की मेरी पहली पंक्ति #! / Bin / sh है। मुझे यकीन नहीं है कि इसमें से कोई फर्क पड़ता है - Schmidty15
@ user1984712 आपको "कमांड नहीं मिला" मिला क्योंकि आपने बीच एक स्थान जोड़ा था num और यह = संकेत। - zwets
नहीं, हमले में हम ऐसा करेंगे: printf '%s\n' {0..9}। - gniourf_gniourf
@gniourf_gniourf वास्तव में गूंज से बेहतर दिखता है, मैं इसे जोड़ दूंगा। - zwets


फिर भी एक और आसान तरीका:

num=0
while (($num <= 10)); do
    echo "$num"
    ((num++))
done

यह बाश में काम करेगा, लेकिन एक मानक POSIX खोल में नहीं।


0
2017-10-27 21:03





इस बैश स्क्रिप्टिंग साइट को आपकी मदद करनी चाहिए, आम तौर पर आपको उनका उपयोग करने से पहले चर घोषित करने की आवश्यकता नहीं है:

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html


-2
2017-10-27 20:24



ओह प्रिय, कृपया ऐसे भयानक दस्तावेजों से लिंक न करें! यह दस्तावेज़ वास्तव में दिखाता है आपको क्या नहीं करना चाहिए अच्छे प्रथाओं को दिखाने के बजाए! - gniourf_gniourf
इसके साथ गलत क्या है? मैं बस यह कहने जा रहा था कि यह काम करता है - Schmidty15
@ user1984712 क्या गलत है? का विश्लेषण पार्सिंग ls, उद्धरणों की कमी, पुरानी सी-लूप शैली, पूंजीकृत चर नामों का उपयोग, का उपयोग let बैश के अंकगणित के बजाय, का उपयोग करें [] के बजाय [[...]] या बैश के अंकगणित, ... कृपया, इस दस्तावेज़ को तब तक न पढ़ें, जब तक कि आप क्रैपी कोड नहीं लिखना चाहते हैं और उचित बाश नहीं सीखना चाहते हैं। - gniourf_gniourf
@gniourf_gniourf अगर यह बुरा है, तो आपको इसे कम करना चाहिए। - Braiam
एचएम, जिसे 2000 से अपडेट नहीं किया गया था। है tldp.org/LDP/abs/html बेहतर है? - LiveWireBT