Я хочу передать 3 параметра с помощью getopts в мой сценарий оболочки. Скрипт требует как минимум первых 2, третий параметр необязателен. Если он не установлен, используется значение по умолчанию. Так что следующее будет работать:
sh script.sh -a "/home/dir" -b 3
sh script.sh -a "/home/dir" -b 3 -c "String"
Я пытался сделать это следующим образом, но он постоянно игнорирует введенные мной параметры.
usage() {
echo "Usage: Script -a <homedir> -b <threads> -c <string>"
echo "options:"
echo "-h show brief help"
1>&2; exit 1;
}
string="bla"
while getopts h?d:t:a: args; do
case $args in
-h|\?)
usage;
exit;;
-a ) homedir=d;;
-b ) threads=${OPTARG};;
-c ) string=${OPTARG}
((string=="bla" || string=="blubb")) || usage;;
: )
echo "Missing option argument for -$OPTARG" >&2; exit 1;;
* )
echo "Unimplemented option: -$OPTARG" >&2; exit 1;;
esac
done
Я новичок в этом getopts, прежде чем я просто добавил параметры в определенном порядке, чего я не хочу делать здесь. Я прочитал здесь много вопросов, но, к сожалению, не нашел того, что мне нужно.
Я действительно хотел бы получить вашу помощь здесь. Спасибо:)
$args
внутри цикла while? В руководстве по getops есть полезная информация; может быть, вы должны сначала проверить там. - person larsks   schedule 29.08.2016