Почему этот короткий скрипт/функция bash не работает? Возможные решения? (Unix bash скриптинг)
Я пытаюсь сделать так, чтобы сообщение об ошибке появлялось, если кто-то запускает мой скрипт, но в качестве аргумента вводится несуществующий файл.
function finder(){
if test find $1 ; then
exit 0
else
exit 1
fi
}
#### error message if file does not exist
if test finder -eq 1 ; then
echo "safe_rm: cannot remove '$1' : No such file or directory"
fi
Я получаю сообщение об ошибке, говорящее, что от функции finger ожидается целое число , но не должно ли оно выдавать состояние выхода 0 или 1 в соответствии с моей функцией?
как я могу сделать заявление if, которое говорит: "Если статус exist finder равен 1, то echo "нет такого файла или каталога"?
Любой совет приветствуется!
Ответы - Почему этот короткий скрипт/функция bash не работает? Возможные решения? (Unix bash скриптинг) / Why doesn't this short bash script/function work? Possible solutions? (UNIX bash scripting)


19.06.2013 03:09:19
Несколько проблем:
exit
останавливает сценарий. Чтобы вернуть значение из функции, используйтеreturn
.test
не принимает команду в качестве первого аргумента. Подробности смотрите вman test
.finder -eq 1
не запускаетfinder
, он принимает его как строку.
На самом деле ты имел в виду что-то вроде:
if test -e "$1" ; then
# ...
else
echo "$1 does not exists."
fi

if test finder -eq 1
должен быть переписанif finder "$1"; then ...
для того, чтобы вызвать его