मेरे पास निम्नलिखित सरल शेल कमांड हैं जो मैं विफल होने की उम्मीद कर रहा हूं और यह मेरे स्थानीय पर करता है:
$ DIR=$(false) && echo ok || echo fail
fail
$ sh -c 'DIR=$(false) && echo ok || echo fail'
fail
लेकिन जब मैं ssh के माध्यम से इस कमांड को पास कर रहा हूं, तो यह अब अपेक्षा के अनुरूप काम नहीं करता है:
$ ssh user@host sh -c 'DIR=$(false) && echo ok || echo fail'
ok
इसलिए मुझे यकीन नहीं है कि समस्या कहां है। मैं पहले से ही apostrophe का उपयोग कर रहा हूं, बहुत जल्दी चर विस्तार से बचने के लिए ।
चर असाइनमेंट से लौटे एक्जिट कोड के आधार पर सही ढंग से काम करने के लिए कमांड का प्रतिस्थापन कैसे करें और कैसे करें?
एक और विसंगति मुझे निम्नलिखित उदाहरण से मिली है:
$ ssh user@host sh -c 'echo 1; echo 2;'
2
जो 1 और 2 दोनों को प्रिंट करने के बजाय केवल 2 को प्रिंट कर रहा है।