inpath.sh 981 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #!/bin/bash
  2. # inpath -- Проверяет допустимость пути к указанной программе
  3. # или ее доступность в каталогах из списка PATH
  4. in_path()
  5. {
  6. cmd=$1 ourpath=$2 result=1
  7. oldIFS=$IFS
  8. IFS=":"
  9. for directory in $ourpath
  10. do
  11. if [ -x $directory/$cmd ] ; then
  12. echo "Command '$cmd' found in '$directory'"
  13. result=0 # Если мы здесь, значит, команда найдена
  14. fi
  15. done
  16. IFS=$oldIFS
  17. return $result
  18. }
  19. checkForInPath()
  20. {
  21. var=$1
  22. if [ "$var" != "" ] ; then
  23. if [ "${var:0:1}" = "/" ] ; then
  24. if [ ! -x $var ] ; then
  25. return 1
  26. fi
  27. elif ! in_path $var "$PATH" ; then
  28. return 2
  29. fi
  30. fi
  31. }
  32. if [ $# -ne 1 ] ; then
  33. echo "Usage: $0 command" >&2
  34. exit 1
  35. fi
  36. checkForInPath "$1"
  37. case $? in
  38. # 0 ) echo "$1 found in PATH" ;;
  39. 1 ) echo "$1 not found or not executable" ;;
  40. 2 ) echo "$1 not found in PATH" ;;
  41. esac
  42. exit 0