पाश की पृष्ठभूमि का काम


81

मैं बैश में पाश के लिए एक पृष्ठभूमि नौकरी चलाने की कोशिश करता हूं:

for i in $(seq 3); do echo $i ; sleep 2 & ; done

मुझे त्रुटि मिली:

bash: syntax error near unexpected token `;'

Zsh में कमांड लाइन काम करती है।


3
आप किस पृष्ठभूमि में जगह बनाने की कोशिश कर रहे हैं? जैसा कि पढ़ता है कि आप बैकग्राउंड में सोने की कोशिश कर रहे हैं, जो बेकार हो जाएगा ..
BugFinder

4
नींद केवल वास्तविक मामले से पहले मेरे पाश का परीक्षण करने के लिए है।
गुलगुई १ui

जवाबों:


124

हटाए ; सोने के बाद

for i in $(seq 3); do echo $i ; sleep 2 & done

BTW, इस तरह के छोरों को उचित इंडेंटेशन के साथ अलग-अलग लाइनों पर लिखा जाता है (यदि आप इसे शेल स्क्रिप्ट फ़ाइल में लिख रहे हैं)।

for i in $(seq 3)
do
   echo $i
   sleep 2 &
done

4
ध्यान रखें कि यह "स्लीप 2" को केवल पृष्ठभूमि में भेजेगा।
तमरला

जब मैं $iपृष्ठभूमि वाली कमांड में ऐसा करता हूं , तो जॉब कंट्रोल का कहना है कि प्रक्रिया का नाम $iजो भी था उसका वास्तविक मूल्य $iथा?
माइकल


for I in <whatever>; do rm -fr $I & done... jobs-> rm -fr $Iकई बार, प्रत्येक कार्य के लिए वास्तविक डायर हटाने के बजाय
माइकल

मेरे पास इसके लिए जवाब है, इसकी लंबी। इसलिए मुझे लगता है कि आपको इसे एक नए प्रश्न के रूप में पोस्ट करना चाहिए (और उस प्रश्न लिंक को यहां जोड़ें), मैं जवाब दूंगा और आपको अधिक प्रतिक्रियाएं भी मिलेंगी।
gammay

42

आप पृष्ठभूमि आदेश () में रख सकते हैं

for i in $(seq 3); do echo $i ; (sleep 2 &) ; done

10
कृपया अवगत रहें: आप इसके द्वारा एक उपधारा बनाएँ। इसका मतलब यह भी है कि आप waitपृष्ठभूमि की नौकरियों को समाप्त करने में सक्षम नहीं होंगे ।
JFK
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.