2013-08-12 4 views
14

में एक पंक्ति अगर/अन्य स्थिति में है, तो मैं एक पंक्ति में निम्नलिखित की समतुल्य होना चाहूंगा यदि/अन्य स्थिति।लिनक्स खोल स्क्रिप्टिंग

$maxline=`cat journald.conf | grep "#SystemMaxUse="` 
if [ $maxline == "#SystemMaxUse=" ] 
then 
    sed 's/\#SystemMaxUse=/SystemMaxUse=50M/g' journald.conf > journald.conf2 
    mv journald.conf2 journald.conf; 
else 
    echo "This file has been edited. You'll need to do it manually." 
fi 

मैं इसे एक लाइन कमांड में डालने का प्रयास कर रहा हूं। अब तक मैं इसे सब कुछ प्राप्त कर चुका हूं लेकिन कमांड का दूसरा भाग। यहां मेरे पास अब तक है ...

maxline=`cat journald.conf | grep "#SystemMaxUse="` && if [ $maxline == "#SystemMaxUse=" ]; then sed 's/\#SystemMaxUse=/SystemMaxUse=50M/g' journald.conf > journald.conf2 && mv journald.conf2 journald.conf; fi 

तो मैं उपरोक्त कोड के अन्य भाग को अपने आदेश में कैसे शामिल कर सकता हूं? आपकी सहायता के लिए अग्रिम रूप से धन्यवाद।

+2

इस्तेमाल कर सकते हैं क्यों आप ऐसा करना चाहते हैं, तो बस अपने कोड अपठनीय हो जाता है ... – erlc

+0

मैं कोशिश कर रहा हूँ किसी को अपनी लॉग फ़ाइल को बदलने के लिए कमांड देने के लिए, लेकिन इसे एक सीएंडपी चीज बनाने की कोशिश करने के लिए वे फाइलें बनाने और उन्हें chmodding के बिना अपने टर्मिनल में बस चला सकते हैं। –

उत्तर

17

ऐसा लगता है कि आप सही रास्ते पर थे। आपको ";" के बाद बस और कथन जोड़ने की जरूरत है "फिर" कथन के बाद। इसके अलावा मैं "& &" के साथ जुड़ने के बजाय अर्धविराम के साथ दूसरी पंक्ति से पहली पंक्ति को विभाजित करूंगा।

maxline='cat journald.conf | grep "#SystemMaxUse="'; if [ $maxline == "#SystemMaxUse=" ]; then sed 's/\#SystemMaxUse=/SystemMaxUse=50M/g' journald.conf > journald.conf2 && mv journald.conf2 journald.conf; else echo "This file has been edited. You'll need to do it manually."; fi 
अपने मूल स्क्रिप्ट में

इसके अलावा, जब Maxline घोषित आप बैक-टिक इस्तेमाल किया "` "के बजाय सिंगल कोट्स" ' "समस्याओं का कारण हो सकता है।

+0

वह आदेश खूबसूरती से काम किया! लगता है कि अर्धविराम की बजाय && परेशानी पैदा कर रहा था। –

+0

बढ़िया! खुश है कि हम इसे काम कर सकते हैं। – Bryan

3

यह प्रश्न के लिए एक सीधा जवाब नहीं है, लेकिन आप केवल या ऑपरेटर

(grep "#SystemMaxUse=" journald.conf > /dev/null && sed -i 's/\#SystemMaxUse=/SystemMaxUse=50M/g' journald.conf) || echo "This file has been edited. You'll need to do it manually." 
संबंधित मुद्दे