Я пытаюсь научиться использовать getopts, чтобы у меня могли быть сценарии с анализируемым вводом (хотя я думаю, что getopts мог бы быть лучше). Я пытаюсь просто написать простой скрипт, чтобы вернуть процент использования разделов. Проблема в том, что одной из моих функций bash, похоже, не нравится то, что я называю $1
переменной внутри функции. Я ссылаюсь на $1
это потому, что get_percent
функции можно передать точку монтирования в качестве необязательного аргумента для отображения вместо всех точек монтирования.
Сценарий
#!/usr/bin/bash
set -e
set -u
set -o pipefail
get_percent(){
if [ -n "$1" ]
then
df -h $1 | tail -n +2 | awk '{ print $1,"\t",$5 }'
else
df -h | tail -n +2 | awk '{ print $1,"\t",$5 }'
fi
}
usage(){
echo "script usage: $(basename $0) [-h] [-p] [-m mount_point]" >&2
}
# If the user doesn't supply any arguments, we run the script as normal
if [ $# -eq 0 ];
then
get_percent
exit 0
fi
# ...
Выход
$ bash thing.sh
thing.sh: line 8: $1: unbound variable
$ bash -x thing.sh
+ set -e
+ set -u
+ set -o pipefail
+ '[' 0 -eq 0 ']'
+ get_percent
thing.sh: line 8: $1: unbound variable
getopts
, не так ли? Ваш сценарий завершается из-за-u
перед вызовомgetopts
.