inpath.sh 929 B

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