xargs: একাধিক কমান্ডে একই যুক্তি ব্যবহার করে


17

আমি একটি ওয়ান-লাইন লেখার চেষ্টা করছি df -hযা কোনও পার্টিশন স্থান [বা প্রায়] স্থানের বাইরে চলে যাওয়ার পরে আউটপুট অনুসন্ধান এবং সতর্ক করতে পারে। এই অংশটি xargs ব্যবহার করে যে আমাকে পাছায় লাথি মারছে ...

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

আমি কীভাবে দ্বিতীয় can} "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"'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.