Я хочу иметь настройку настроек для моего сценария таким образом, чтобы он не принимал аргумент ( -P
), но так, чтобы он также мог принять аргумент (-PR-библиотека
). Оба должны быть приняты. Они (аргумент, а не аргумент), как разрешены. Аргумент должен быть разрешен любую строку. См. Ниже:
while getopts "p:sdih" opt; do
case ${opt} in
p )
#WHEN NO ARGUMENT IS GIVEN, DO THIS
selection="plex"
#WHEN AN ARGUMENT IS GIVEN, DO THIS
selection="plex"
argument=true
optarg="$OPTARG"
;;
s )
selection="sonarr"
;;
d )
selection="deluge"
;;
i )
selection="info"
;;
h )
usage | column -t -s "|"
exit
;;
\? )
echo "Invalid option"
usage | column -t -s "|"
exit
;;
esac
done 2>/dev/null
shift $((OPTIND -1))
Вот как это Нужно работать. Но я новичок, чтобы добиться, поэтому я не знаю, как это сделать ...
Чтобы проверить отсутствующие аргументы, начать OptString с толстой кишкой :
Изменение «P: SDIH»
К «: P: SDIH»
Затем добавьте аргумент корпуса до \?)
Вроде так:
:) echo "Option $OPTARG has no argument."
exit
;;
Вы можете проверить наличие более одного варианта, оценивая Optarg "
Если отсутствует опция-аргумент:
Если первый символ OPTSTRING - это колон , переменная оболочки, указанная именем, должна быть установлена на символ и переменная оболочки Optarg должна быть установлена на символ опции найденный.
В противном случае переменная оболочки, указанная по имени, должна быть установлена на символ символ символа , вариабельная оболочка Optarg должна быть Unset, и диагностическое сообщение должно быть записано в стандартную ошибку. Это условие считается ошибкой, обнаруженной в Путь аргументов были представлены на приложение, но должны не ошибка в обработке Глама; Диагностическое сообщение должно Будьте написаны как указано, но состояние выхода должно быть ноль.
Больше информации можно найти здесь