উত্তর:
{}
আপনার কমান্ডে দু'বার লিখুন । নিম্নলিখিত কাজ করবে:
$ echo test | xargs -I {} echo {} {}
test test
আপনার সমস্যা হ'ল আদেশগুলি কীভাবে বাসা বাঁধে । এটি দেখুন:
echo test | xargs -I {} echo {} && echo {}
বাশ কার্যকর করবে echo test | xargs -I {} echo {}
। যদি এটি সফলভাবে চলে, echo {}
কার্যকর হয় uted বাসা বদলানোর জন্য, আপনি এরকম কিছু করতে পারেন:
echo test | xargs -I {} sh -c "echo {} && echo {}"
তবে, আপনি সমস্যা পেতে পারেন কারণ কোডটি ইনজেকশন প্রবণতা প্রবণ হতে পারে। যখন "পরীক্ষা" শেল কোড দ্বারা প্রতিস্থাপিত হয়, এটি কার্যকর হয়। অতএব, আপনার সম্ভবত যুক্তি সহ নেস্টেড শেলটিতে ইনপুটটি পাস করা উচিত।
echo test | xargs -I {} sh -c 'echo "$1" && echo "$1"' sh {}
$(rm -f *)
,। এটি করা ভালxargs -I {} sh -c 'echo "$1" && echo "$1"' sh {}
অন্য বিকল্পটি -i
পতাকা ব্যবহার করা হয় , যা একইরূপে -I{}
(এটি বোঝায় যে প্রতিস্থাপনটি দেওয়া হয়েছে {}
):
$ echo test | xargs -i echo {} {}
This option is deprecated; use -I instead.
ম্যানুয়ালটিতে যুক্ত করা হয়েছে man xargs
।
আমার জন্য কেবল লোয়ার কেস কাজ করে। আমার একটি ডিরেক্টরিতে কয়েকশো ইমেজ ছিল এবং তাদের উত্সগুলিকে একটি তালিকায় আনতে চেয়েছিলাম। আপার কেস আই -I
বিকল্পটি আমার পক্ষে কার্যকর হয়নি। শুধুমাত্র নিম্ন ক্ষেত্রে। সম্ভবত সংস্করণের পার্থক্যের কারণে। এই চিত্রগুলির সকলের মতো নাম ছিল Daniel_(somenumber).jpg
।
এই বাক্য গঠনটি কাজ করেছে:
ls -l | tr -s ' ' ':'| cut -d: -f9 | xargs -i echo "img src='"{}"'alt='{}'"
রিটার্নস:
src='Daniel_248.jpg' alt='Daniel_248.jpg'
...
লিনাক্স ভার্স 4.14.96-hw + # 80 এসএমপি x86_64 জিএনইউ / লিনাক্স
var=test & echo $var ...