linux - Why does "su - -c" make this fail? -


यह असफल क्यों है?

  ~ $ su - - "कश्मीर = 0; यदि ls | grep -q ^ डेस्कटॉप; फिर k = 1; fi; यदि [$ k == 1]; फिर एको 1; फाई "पासवर्ड: -बाश: लाइन 0: [: ==: एक ऑपरेटर की अपेक्षित  

यह su - - भाग के बिना काम करता है।

अपडेट

यह एक सरलीकृत उदाहरण, मुझे वास्तव में क्या चाहिए था

  ssh -t $ host 'su - -c "k = 0; अगर yum चेक-अद्यतन | grep -q ^ kernel-; फिर k = 1 ;; Yum -y अपडेट; अगर [\ $ k == 1]; फिर रिबूट; फाई ''  

जो अब मदद के लिए धन्यवाद करता है, मैं यहां आया हूं।

ऐसा इसलिए है क्योंकि आपके खोल एक चर विस्तार (क्योंकि आप डबल उद्धरण का उपयोग कर रहे हैं) करेंगे, और बहुत ही संभावना कश्मीर कुछ भी नहीं है क्योंकि यह सेट नहीं है। कृपया इसके बजाय विचार करें:

  सु - - "कश्मीर = 0; यदि ls | grep -q ^ डेस्कटॉप; फिर k = 1; fi; यदि [\ $ k == 1]; फिर प्रतिध्वन 1; फाई "(बचने वाले डॉलर के साथ) या:  
  सु - - 'कश्मीर = 0; अगर एलएस | Grep -q ^ डेस्कटॉप; तो कश्मीर = 1; फाई; अगर [$ k == 1]; फिर 1 गूंज; फाई ' 

एकल अवतरणों के साथ जो चर विस्तार को रोकेगा।


और वैसे,! ऐसा लगता है कि आपकी समस्या यह निर्धारित करने के लिए है कि क्या डेस्कटॉप से शुरू होने वाले नाम के साथ फाइल या निर्देशिका मौजूद है थोड़ा अनुमान अनुमान लगाकर, मुझे लगता है कि वास्तव में इसका अर्थ है कि क्या निर्देशिका नाम है बिल्कुल डेस्कटॉप है इस मामले में:

  यदि [[-d डेस्कटॉप]]; तो कश्मीर = 1; Fi  

बेहतर होगा यदि बैश में नहीं है (या बैश में लेकिन बिसिज़्म से बचने के लिए):

  यदि [-d डेस्कटॉप]; तो कश्मीर = 1; Fi  

Comments

Popular posts from this blog

c# - Highlight all words containing a letter in a richtextbox -

Editing Python Class in Shell and SQLAlchemy -

java - JavaFX WebEngine Video Playback in Linux -