Следующий код выполняется в subscript.sh и subscript.sh
запускается внутри primaryscript.sh
Getops рассмотреть мой вариант цепочку в качестве аргумента для первого
#### primaryscript.sh
#! /bin/bash
#...
"$bss_path"/subscript.sh "$option"
#...
Я использую этот код для разбора моих аргументов и их значения :
#### subscript.sh
#! /bin/bash
while getopts "hw:l:s:b:" opt; do
case $opt in
w)
x="$OPTARG";;
l)
xx="$OPTARG";;
s)
xxx="$OPTARG";;
b)
xxxx="$OPTARG";;
h)
print_usage
exit 0;;
\?)
echo "Invalid option: -$OPTARG"
exit 1;;
esac
done
проблема появляется, когда я называю мой сценарий с несколькими аргументами:
./myscript -l 5.0.3-0 -s 4.0-0 -b 010
гэппозмы думаю, что опция l
есть 5.0.3-0 -s 4.0-0 -b 010
как аргумент.
Что я делаю неправильно? Я попытался поиграть с :
и с опцией, но, как я понял, я должен поставить их за варианты, принимающие аргумент правильно? И getops, естественно, знает, что -
является разделителем аргументов.
$> echo $BASH_VERSION
$> 3.2.25(1)-release
С bash 3.1.17 (от RHEL 5) и 4.2.8 (от Ubuntu 11.04): если я добавлю это как последнюю строку, он отлично подходит для меня: 'echo -e 'w: $ x \ nl: $ xx \ ns: $ xxx \ nb: $ xxxx "' – Cyrus
Добавьте строку, которая выполняет этот сценарий, и покажет shebang этого скрипта. Btw. ваш скрипт отлично работает с bash, sh, dash и zsh. – Cyrus
Ваш вопрос стал очень неясным. Не могли бы вы отредактировать его, удалить абзацы «EDIT1» .... и просто показать нам, какие операции вы выполняете до того, как вызвали цикл getopts? – Aserre