एकाधिक बयानों को करने का एक तरीका क्या किसी को बैश परीक्षण के भीतर कई कथन निष्पादित करने का तरीका पता है? तो अगर मैं का उपयोग करें:प्रति बैश परीक्षण और कथन
[[ $Var = 1 ]] && echo "yes-1" || echo "no-1"
और Var=1
सेट तो उत्पादन होता है: yes-1
तो मैं सेट Var=2
तो उत्पादन होता है: no-1
और इस काम के रूप में मैं उम्मीद थी। लेकिन मैं एक और बयान मिश्रण में निष्पादित करने के लिए जोड़ने के लिए कोशिश करते हैं और यह काम नहीं करता है:
[[ $Var = 1 ]] && echo "yes-1";echo "yes-2" || echo "no-1";echo "no-2"
के रूप में बैश आदेश पर समाप्त देखता कौन समझ में आता है; लेकिन ... यह वही नहीं है जो मैं चाहता हूं।
मैंने समूहबद्ध करने और evals और कार्यों की कोशिश की है और विफलताओं और सफलताओं की है लेकिन मैं वास्तव में ऐसा करना चाहता हूं कि यह काम एक पंक्ति पर है। क्या किसी के भी पास कोई सुझाव है?
धन्यवाद मैंने इस तरह कुछ करने की कोशिश की थी लेकिन "मिस" दूसरे बयान के अंत में। –
मैंने आपको सही उत्तर दिया क्योंकि ";" प्रत्येक कथन के अंत में यह या तो() subshell या {} समूहकरण के साथ काम करता है। अधिकांश मामलों में –
आईएमओ, कमांड ग्रुपिंग बेहतर है। जैसे अगर आप किसी स्क्रिप्ट से बाहर निकलना चाहते हैं तो कुछ विफल हो जाता है तो आप 'foocmd || कर सकते हैं {echo foo विफल रहा; बाहर निकलें 1; } 'और यह एक निदान और बाहर निकलें मुद्रित करेगा। यदि आप समूहबद्ध करने के लिए सबहेल का उपयोग करते हैं, तो केवल सबहेल ही बाहर निकल जाएगा, न कि विज्ञान, जो लगभग निश्चित रूप से इच्छित प्रभाव नहीं है। – JVMATL