LINUX.ORG.RU

Разбор аргументов bash-скрипта


0

0
Допустим есть скрипт test.sh
Ему переданы параметры командной строки

test.sh -p qwe -h rty

Внутри скрипта мне я в цикле перебираю

SOME_VAR=""
COUNT=1

for i in $* ; do
   if [ "$i" = "-p" ]; then
       SOME_VAR=$(expr $COUNT + 1)
   fi
   
   COUNT=$(expr $COUNT + 1)
done

Короче говоря в SOME_VAR мне нужно засунуть
следующий по порядку после "-p" аргумент, но
по факту туда попадает (expr $COUNT + 1), т.е.
число 2. Но ведь я пишу $(expr $COUNT + 1) и
поидее туда должно попасть $2, которое "qwe".
Подскажите пож-сто что я делаю не так?
anonymous
Нифига не понял :-), но может тебе нужен man getopt?
sdio ★★★★★
()
зачем изобретать велосипеды, man getopt
asgard
()
или смотреть man bash на предмет getopts
ananas ★★★★★
()
Ответ на: комментарий от dilmah
man bash :
getopts returns true if an option, specified or unspecified, is found. It returns false if the end of options is encountered or an error occurs

Это всё хорошо, но узнать есть такой параметер или его нет я и сам могу.
Мне нужно запхнуть в локальную переменную значение этого параметра. См. вопрос
anonymous
()
Ответ на: комментарий от anonymous
вырезано из реального кода:

while getopts d:l optname > /dev/null 2>&1; do
    if test "$optname" = "d"; then
        DESCR="$OPTARG"
    elif test "$optname" = "l"; then
        LOCAL=1
    else
        echo Unknown option 1>&2
        exit 1
    fi
done
shift `expr $OPTIND - 1`
dilmah ★★★★★
()
Ответ на: комментарий от dilmah
Ага, то что надо. Большое спасибо.
anonymous
()
Ответ на: комментарий от dilmah
имхо, лучше case ... esac для разбора использовать.
ananas ★★★★★
()
> COUNT=$(expr $COUNT + 1)

> Короче говоря в SOME_VAR мне нужно засунуть следующий по порядку после "-p" аргумент, но по факту туда попадает (expr $COUNT + 1), т.е. число 2. Но ведь я пишу $(expr $COUNT + 1) и поидее туда должно попасть $2, которое "qwe". Подскажите пож-сто что я делаю не так?

а по исходному вопросу -- для этого создан eval

dilmah ★★★★★
()
Ответ на: комментарий от sdio
вы вообще читали что автору нужно? Он жаловался что он хочет получить $2, где 2 получается как результат его вычислений. Это eval. А вы ему какую-то фигню (да еще и нестандартную) пишете.
dilmah ★★★★★
()
Ответ на: комментарий от dilmah
Разуй глаза, я не автору это написал
sdio ★★★★★
()
Ответ на: комментарий от dilmah
Это не ко мне, я вообще всегда пишу на наистандартнейшем sh (ибо зоопарк unix-ов на работе)
sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.