expect-file 496 B

1234567891011121314151617181920212223242526272829
  1. #!/bin/bash
  2. #
  3. # Wait until a given file appears
  4. #
  5. # Params:
  6. # $1 - filename
  7. # $2 - maximum time to wait in seconds, default is 5 seconds
  8. if [[ $# -lt 1 || $# -gt 2 ]]
  9. then
  10. echo "invalid arguments"
  11. exit 1
  12. fi
  13. secs=$2
  14. [ ! $secs ] && secs=5
  15. let steps=$secs*10
  16. for i in `seq 1 $steps`
  17. do
  18. # -f does not work for special files (e.g. UNIX domain sockets), use ls
  19. # instead
  20. ls $1 >/dev/null 2>&1
  21. [ $? -eq 0 ] && exit 0
  22. sleep 0.1
  23. done
  24. echo "File '$1' not available after $secs second(s)"
  25. exit 1