আমি সোলারিস 10 এ আছি এবং আমি নিম্নলিখিতটি ksh (88), বাশ (3.00) এবং zsh (4.2.1) দিয়ে পরীক্ষা করেছি।
নিম্নলিখিত কোডটি কোনও ফল দেয় না:
function foo {
echo "Hello World"
}
find somedir -exec foo \;
অনুসন্ধানটি বেশ কয়েকটি ফাইলের সাথে মেলে না (যেমন প্রতিস্থাপনের -exec ...মাধ্যমে দেখানো হয়েছে -print), এবং findকলটি বাইরে থেকে ডাকলে ফাংশনটি পুরোপুরি কাজ করে ।
man findপৃষ্ঠাটি সম্পর্কে যা বলে তা এখানে -exec:
এক্সেক্স কমান্ড সত্য যদি এক্সিকিউটেড কমান্ডটি a প্রদান করে
প্রস্থান স্থিতি হিসাবে শূন্য মান। শেষে
কমান্ড অবশ্যই একটি পালানো দ্বারা বিরামচিহ্ন করা উচিত
সেমিকোলন (;)। একটি কমান্ড আর্গুমেন্ট {}
বর্তমান পথের নাম দ্বারা প্রতিস্থাপিত। যদি
এক্সেক-এর শেষ যুক্তিটি {is এবং আপনি
সেমিকোলন (;) এর পরিবর্তে + নির্দিষ্ট করুন,
কমান্ডটি কয়েকবার ডাকা হয় with
path path পথের গ্রুপগুলির দ্বারা প্রতিস্থাপিত। যদি
কমান্ডের যে কোনও প্রার্থনা প্রত্যাবর্তন করে a
প্রস্থান স্থিতি হিসাবে শূন্য-মান, সন্ধান করুন
একটি শূন্য-বহির্গমন স্থিতি ফেরত দেয়।
আমি সম্ভবত এই জাতীয় কিছু করে পালাতে পারি:
for f in $(find somedir); do
foo
done
তবে আমি ফিল্ড বিভাজক সমস্যাগুলি মোকাবেলা করতে ভয় পাচ্ছি।
কোনও কল থেকে কোনও শেল ফাংশন (একই স্ক্রিপ্টে সংজ্ঞায়িত করা যাক, স্কোপিংয়ের সমস্যাগুলি নিয়ে বিরক্ত না করা) find ... -exec ...কল করা কি সম্ভব?
আমি উভয় সঙ্গে এটা চেষ্টা /usr/bin/findএবং /bin/findএবং একই ফলাফল পেয়েছেন।
PATH। বিকল্পভাবে, ব্যবহার sh -c '...'এবং উভয় ...বিট মধ্যে ফাংশন সংজ্ঞায়িত এবং চালানো । এটি ফাংশন এবং স্ক্রিপ্টগুলির মধ্যে পার্থক্য বুঝতে সহায়তা করতে পারে ।
export -f foo