উত্তর:
প্রদত্ত ফাইলটি উপস্থিত না হওয়া বা প্রদত্ত সময়সীমাটি না আসা পর্যন্ত এই ব্যাশ ফাংশনটি অবরুদ্ধ হবে। ফাইলটি উপস্থিত থাকলে প্রস্থান স্থিতি 0 হবে; যদি এটি না হয়, প্রস্থান স্থিতিটি কত সেকেন্ডের জন্য ফাংশনটি অপেক্ষা করেছে তা প্রতিফলিত করবে।
wait_file() {
local file="$1"; shift
local wait_seconds="${1:-10}"; shift # 10 seconds as default timeout
until test $((wait_seconds--)) -eq 0 -o -f "$file" ; do sleep 1; done
((++wait_seconds))
}
এবং আপনি এটি কীভাবে ব্যবহার করতে পারেন তা এখানে:
# Wait at most 5 seconds for the server.log file to appear
server_log=/var/log/jboss/server.log
wait_file "$server_log" 5 || {
echo "JBoss log file missing after waiting for $? seconds: '$server_log'"
exit 1
}
আরেকটি উদাহরণ:
# Use the default timeout of 10 seconds:
wait_file "/tmp/examplefile.txt" && {
echo "File found."
}
until [ -f /tmp/examplefile.txt ]
do
sleep 5
done
echo "File found"
exit
প্রতি 5 সেকেন্ড পরে এটি জেগে উঠবে এবং ফাইলটি সন্ধান করবে। ফাইলটি উপস্থিত হওয়ার পরে, এটি লুপের বাইরে নেমে আসবে, আপনাকে বলবে যে এটি ফাইলটি খুঁজে পেয়েছে এবং প্রস্থান করতে হবে (প্রয়োজনীয় নয়, তবে পরিপাটি))
এটিকে কোনও স্ক্রিপ্টে রাখুন এবং স্ক্রিপ্ট হিসাবে এটি শুরু করুন &
এটি পটভূমিতে এটি চালানো হবে।
আপনার ব্যবহৃত শেলটির উপর নির্ভর করে সিনট্যাক্সে সূক্ষ্ম পার্থক্য থাকতে পারে। তবে এটির মূল বক্তব্য।
start=`date +%s`; while (( `date +%s` - start > 10 )); do sleep 1; done