All pastes #16896 Raw Edit

Untitled

public text v1 · immutable
#16896 ·published 2005-07-05 00:42 UTC
rendered paste body
#!/bash/sh
#inpath - Vefifies that a specific program is either valid as is,
# or that it can be found in the PATH directory list.

in_path()
{
#Given a command and the PATH, try to find the command.  Return
#0 if found and executable, 1 if not.  Note that this temporarily modifies
#the IFS (input field separator) but restores it upon completion.

cmd=$1 path=$2 retval=1
oldIFS=$IFS  IFS=":"

for directory in $path
do
 if [-x $directory/$cmd]; then
  retval=0  #if we're here, we found $cmd in $directory
 fi
done
IFS=$oldIFS
return $retval
}
checkForCmdInPath()
{
 var=$1
	
	#The variable slicing notation in the following conditional
	#needs some explanation: ${var#expr} returns everything after
	#the match for 'expr' in the variable value (if any), and
	#${var%expr} returns everything that doesn't match (in this
	#case, just the very first character.  You can also do thid
	#in Bash with ${var:0:1} and you could use cut too: cut -c1.

if["$var"!=""];then
 if["${var%${var#?}}" = "/"]; then
  if[!-x $var]; then
   return 1
  fi
 elif ! in_path $var $PATH ; then
   return 2
   fi
  fi
 }

	#To run the script, a short block of command need to be
	#inserted to the very end of the file.  These commands
	#pass starting parameter to the validation program and check
	#the return cod

if[ $#-ne 1 ]; then
 echo "Usage: $0 command" >&2 ; exit 1
 fi

checkForCmdInPath "$1"
case $? in
 0) echo "$1 found in PATH"	;;
 1) echo "$1 not found or not executable"  ;;
 2) echo "$1 not found in PATH"		;;
esac

exit 0