xargs: कई कमांड्स में एक ही तर्क का उपयोग करना


17

एक-लाइनर लिखने की कोशिश कर रहा हूँ जो किसी df -hविभाजन के [या लगभग] बाहर होने पर आउटपुट और अलर्ट की जांच कर सकता है। यह xargs का उपयोग करने वाला हिस्सा है जो मुझे अब गधे में मार रहा है ...

echo 95 | xargs -n1 -I{} [ {} -ge 95 ] && echo "No Space on disk {}% full -- remove old backups please"

मैं दूसरा {} शो "95" भी कैसे बना सकता हूं?

जवाबों:


23

यह कमांड &&का हिस्सा नहीं है xargs, यह पूरी तरह से अलग आह्वान है। मुझे लगता है कि आप स्पष्ट रूप से एक सबमिशन निष्पादित करना चाहते हैं:

echo 95 | xargs -n1 -I_percent -- sh -c '[ _percent -ge 95 ] && echo "No Space on disk _percent% full -- remove old backups please"'

ध्यान दें कि मैं शेल के साथ अतिरिक्त उद्धरण वाले सिरदर्द से बचने _percentके {}लिए उपयोग कर रहा हूं । यह एक शेल चर नहीं है; अभी भी सिर्फ एक xargs प्रतिस्थापन स्ट्रिंग।


3

एक वैकल्पिक तरीका, जो अधिक पठनीय है, एक अलग फ़ंक्शन को परिभाषित करना है जिसमें आपके सभी अन्य कमांड शामिल हैं और फिर उस फ़ंक्शन को xargsसब-शेल में कॉल करें ।

इसलिए, उदाहरण के लिए:

myfunc(){
  [ "$1" -ge 95 ] && echo "No Space on disk $1% full -- remove old backups please"
  echo "Another command echoing $1"
}

export -f myfunc

echo 95 | xargs -n1 -I_percent -- sh -c 'myfunc "_percent"'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.