Jawaban:
Fungsi bash ini akan memblokir sampai file yang diberikan muncul atau batas waktu yang diberikan tercapai. Status keluar akan menjadi 0 jika file ada; jika tidak, status keluar akan mencerminkan berapa detik fungsi telah menunggu.
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))
}
Dan inilah cara Anda dapat menggunakannya:
# 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
}
Contoh lain:
# 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
Setiap 5 detik itu akan bangun dan mencari file. Ketika file muncul, itu akan keluar dari loop, memberi tahu Anda bahwa itu menemukan file dan keluar (tidak diperlukan, tetapi rapi.)
Masukkan itu ke dalam skrip dan mulai sebagai skrip &
Itu akan menjalankannya di latar belakang.
Mungkin ada perbedaan halus dalam sintaks tergantung pada shell yang Anda gunakan. Tapi itulah intinya.