Ответ 1
getopts
анализирует аргументы функции readArgs
, и вы не даете этой функции никаких аргументов.
Попробуйте:
readArgs "[email protected]"
function readArgs() {
while getopts "i:o:p:s:l:m" OPTION; do
case "$OPTION" in
i)
input="$OPTARG"
;;
o)
output="$OPTARG"
;;
...
esac
done
}
readArgs
if [[ -z "$input" ]]; then
echo "Not set!"
fi
Это всегда дает мне Not set!
, но если я прокомментирую строки function readArgs() {
, }
и readArgs
, это сработает. Почему?
Кроме того,
input="$OPTARG"
echo "$input"
;;
не работает.
getopts
анализирует аргументы функции readArgs
, и вы не даете этой функции никаких аргументов.
Попробуйте:
readArgs "[email protected]"
getopts
полагается на переменную OPTIND
, инициализированную на 1. Либо сделайте
readArgs() { OPTIND=1; ...
или
readArgs() { local OPTIND; ...