Я искал вокруг узнал, что getops получает только ноль или один аргумент, но мне действительно нужно, чтобы сделать эту работу,getops 1 вариант получить 2 аргумента
Мне нужно сделать мой сценарий работать так:. /script.sh -a string integer
Что он делает, это написать строку и целое число в текстовый файл.
Я попробовал этот код:
while getopts a:d opt
do
case "$opt" in
a) na1=$OPTARG
eval "na2=${OPTIND}"
shift 2
;;
d) ./viewS.sh;;
esac
done
if [ $isdef -eq 0 ]
then
echo "$na1;$na2" >>PBDB.txt
fi
я могу написать часть строки в текстовый файл, а число только продолжает заканчиваясь к «3».
образца: ./script.sh -a мощность 0000
результат внутри текстового файла: мощность; 3
какие-либо предложения?
только недавно начал изучать Баш скриптовый
почему на земле вы используете * index * аргумента? –
Вы имеете в виду OPTIND? .. Я думал, что смогу заставить его работать таким образом, я знаю, что он не прав, хотя .. – user3632739
Что делает @KarolyHorvath, так это то, что '$ {OPTIND}' - это следующий индекс, на который нужно смотреть, а не значение этого аргумента , Вы попытались исправить это с помощью 'eval', но пропустили лишний' \ $ 'необходимый. Но это не очень хороший способ сделать это. Вместо этого используйте '$ {@: $ OPTIND: 1}'. Кроме того, я думаю, что вы слишком много меняете. Я думаю, вы хотите «сменить» на «проглотить» один дополнительный аргумент. Хотя лично я считаю, что это плохой дизайн. –