আমি সোলারিস 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