Ubuntu. Утилита basename должна быть установлена. Сценарий Bash называется "basename"
#!/bin/bash
PROGNAME=$(basename $0)
if [[ -e $1 ]]; then
echo -e "\nFile Type:"
file $1
echo -e "\nFile Status:"
stat $1
else
echo "$PROGNAME: usage: $PROGNAME file" >&2
exit 1
fi
После запуска "./basename case", где "case" - это сценарий bash, произошли ошибки:
/home/user/bin/basename: fork: retry: No child processes
/home/user/bin/basename: fork: retry: No child processes
...
/home/user/bin/basename: fork: Resource temporarily unavailable
И в итоге показывает ожидаемый результат.
Здесь происходит что-то хитрое. Что это?
Ладно, я понял. Команда basename в третьей строке запускает не инструмент linux basename, а рекурсивно запускает этот скрипт. Так что именовать сценарии, как стандартные программы Linux, не очень хорошо. Чтобы сценарий работал с именем "basename", он должен использовать полный путь к basename.
PROGNAME=$(/usr/bin/basename $0)