Я не совсем уверен, правильно ли я использую выходы. Но когда я выполняю код с чем-то, что печатает оператор использования, он должен на этом остановиться.
Это должен сделать один или другой. В моем случае это делает оба.
cmd="$1" ## the command to find
if [[ $# -ne 1 ]]
then
echo "usage: ./findcmd command"
fi
exit=1
path=$(echo $PATH | tr ":" " ")
for dir in $path
do
if [[ -x "$dir/$cmd" && -r "$dir/$cmd" ]]
then
echo "$dir/$cmd"
exit 0
fi
done
echo "$cmd not on $PATH"
exit=0
ВЫВОД:
[112] ./findcmd
использование: ./findcmd команда
/ usr / local / bin / ** это не должно быть здесь
[113] ./findcmd ping
/ USR / бен / пинг