Когда у меня есть обязательная опция в моих сценариях оболочки, я использую расширение параметров, а именно: ${variable:?message}
, которое будет печатать message
, если $variable
пусто или не установлено. Вы можете ввести это в свой код следующим образом:
#!/bin/bash
while getopts "p:" opt
do
case ${opt} in
p) valueToPrint=$OPTARG ;;
esac
done
# print the argument value
printf "I like %s programming\n" ${valueToPrint:?A -p option is required.}
У вас есть три сценария ios, которые могут возникнуть в этой программе:
Без параметра:
$ bash test.sh
test.sh: line 10: valueToPrint: A -p option is required.
С флагом опции, но без параметра:
$ bash test.sh -p
test.sh: option requires an argument -- p
test.sh: line 10: valueToPrint: A -p option is required.
С флагом опции и параметром:
$ bash test.sh -p bash
I like bash programming