Я создал сценарий оболочки, который имеет 1 обязательный аргумент. Я хочу, чтобы сценарий запускался только в том случае, если присутствует один аргумент, иначе он будет завершен.Проверка наличия аргумента командной строки
Вот мой код:
#!/bin/bash
branch=stable
# Custom options/arguments
usage() { # usage code }
while getopts ":bs:" opt; do
case $opt in
b)
branch=development
;;
s)
site=${OPTARG}
;;
*)
usage
;;
esac
done
shift $((OPTIND-1))
if [ -z "${s}" ]; then
echo "
$(tput setaf 1)ERROR:
=========================$(tput sgr0)
$(tput setaf 6)No website name provided:
Format: <example.com>$(tput sgr0)
"
exit 1;
fi
# Rest of the code to run when there are no errors - not putting here as it's irrelevant
Так что я бы ожидать, что, когда я бегу sudo ./nginx-install.sh
было бы увидеть там нет аргументов и показать сообщение об ошибке - что делает. Но когда я делаю sudo ./nginx-install.sh -s example.com
, я просто получаю сообщение об ошибке снова, когда действительно ожидаю, что остальная часть кода будет запущена.
Может кто-нибудь указать, где я ошибаюсь в коде? Я новичок в создании сценариев bash, поэтому в основном отвечал на запросы Google о помощи.
Спасибо.
Спасибо @choroba - Я был не за горами! –