/ / बैश लूप के भीतर कार्यों को कैसे करें - बैश, लूप, बैकग्राउंड

बैश लूप के भीतर पृष्ठभूमि कार्यों को कैसे करें - बैश, लूप, पृष्ठभूमि

निम्नलिखित बैश लूप को देखते हुए:

for ((x=1; x<=$y; x++)); do echo $x; done
1
2
3
4

व्यक्तिगत कार्यों को "पृष्ठभूमि" कैसे करें?

09:25:58/~ $for ((x=1; x<=$y; x++)); do echo $xi &; done
-sh: syntax error near unexpected token `;"

मैंने "बैश" को इको करने की कोशिश की और यह भी काम नहीं किया:

09:26:37/~ $for ((x=1; x<=$y; x++)); do bash -c "echo $x" &; done
-sh: syntax error near unexpected token `;"

उत्तर:

जवाब के लिए 2 № 1

दोनों & तथा ; शेल में कमांड टर्मिनेटर हैं।

आपको केवल प्रत्येक कमांड को एक बार समाप्त करने की आवश्यकता है। तो दोनों का एक साथ उपयोग न करें:

for ((x=1; x<=$y; x++)); do echo $x & done

आपको दो का उपयोग करके एक ही त्रुटि मिलेगी ;साथ ही:

$ for ((x=1; x<=$y; x++)); do echo $x ; ; done
-bash: syntax error near unexpected token `;"

ध्यान दें कि उपयोग करने की कोशिश कर रहा है ;; एक अलग त्रुटि मिलती है क्योंकि ;; शेल के लिए एक विशेष टोकन है (प्रयोग किया जाता है) case बयान):

-bash: syntax error near unexpected token `;;"

शैल व्याकरण:

%start  complete_command
%%
complete_command : list separator
| list
;
list             : list separator_op and_or
|                   and_or
;
....
separator_op     : "&"
| ";"
;
separator        : separator_op linebreak
| newline_list
;

उत्तर № 2 के लिए 1
for ((x=1; x<=$y; x++)); do { echo $x & } ; done

उत्तर № 3 के लिए 1

यह काम करेगा:

for ((x=1; x<=y; x++)); do echo $x & done

ध्यान दें कि कोई नहीं है ; बाद &। हालांकि लाइन ब्रेक का उपयोग करना इसे और अधिक पठनीय बना देगा:

for ((x=1; x<=y; x++)); do
echo $x &
done