2012-06-04 19 views
11

के लिए मैं sudo के साथ पाश आदेश के लिए एक सरल चलाना चाहते हैं sudo का उपयोग करना है, लेकिन यह काम नहीं कर रहा:साथ पाश

sudo -i -u user for i in /dir; do echo $i; done 

मैं निम्नलिखित त्रुटि मिलती है: शायद एक बहुत

-bash: syntax error near unexpected token `do' 

सरल बात मैं देख रहा हूँ। कोई मदद?

उत्तर

21

सुडो एक प्रोग्राम (+ तर्क) को पैरामीटर के रूप में चाहता है, शेल स्क्रिप्ट का एक टुकड़ा नहीं। आप यह कर सकते हैं, हालांकि:

sudo -i -u user sh -c 'for i in /dir; do echo $i; done' 

एकल उद्धरण नोट करें। यदि आपने डबल कोट्स का उपयोग किया है, तो आपका खोल सूडो से पहले $i का विस्तार करने की कोशिश करेगा (या इसके बजाए, इसे खोलने वाला खोल) इसे कभी देखता है।

+0

आपको यह मिला! आप सभी को शुभकामनायें। – shellter

+0

यह चाल है, धन्यवाद! – Axl

+0

इसके अनुसार, प्रत्येक आउटपुट फ़ाइल निर्दिष्ट उपयोगकर्ता की होम निर्देशिका में लिखी/सहेजी जाएगी। क्या होगा यदि मैं एक विशिष्ट में आउटपुट लिखना चाहता हूं? –

1

पाश अंदर sudo रखो कोशिश कर सकते हैं:

for i in /dir; do 
    sudo -u user somecommand $i 
done 

इस अतिरिक्त कदम बिना काम नहीं करेगा आप अन्य उपयोगकर्ता के अनुमतियों की जरूरत है उत्पन्न करने के लिए उदाहरण के लिए, लूप के लिए ग्लोब।

+0

इसके साथ समस्या यह है कि अगर सूडो टाइमआउट पर्याप्त नहीं है, तो यह हर समय पासवर्ड मांगेगा :( –