Bash getopts проблема

Использование замены команды Как ответа John1024, является лучшим способом решить эту проблему.

В качестве альтернативы вы можете прочитать ваш вывод на при чтении , который присваивает каждое пространство-разделенное значение для переменной вашего выбора. Обычно это используется, когда ваш выход имеет более одной переменной, которую вы хотели бы использовать.

cat /proc/zem0 |grep -i isrs|grep -Eo '[0-9]+$' | while read myvariable ; do echo $(( (2147483633-"${myvariable}")/5184000 )) ; done

При чтении действительно полезно для столбчатых данных, вставляющих вещи в инвентаризацию и т. Д. E.G. Если file1 содержимое:

host1 192.168.0.100 web nyc1 00-23-54-EE-10-5C
host2 192.168.0.101 web nyc2 00-23-54-EE-10-5D
host3 192.168.0.102 web nyc1 00-23-54-EE-10-5E

, тогда вы можете сделать

cat file1 | while read host ip role dc mac ; do
    cobbler system add --name=${host} --ip-address=${ip} --netmask=255.255.255.0 --mac-address=${mac} --comments="${role} ${dc}"
done
0
18.03.2015, 16:38
2 ответа

Только несколько модификаций.

1) Установите свой шэбах! #!/bin/bash если вы пишете bash

2) Сброс, если раньше использовались getopts

3) Вы забыли m на $moznost.

4) Не используйте заглавные буквы для обычных имен переменных.

5) Используйте больше кавычек. Двойные кавычки " " при расширении переменных.
6) Используйте сдвиг .

7) Вам не нужно определять / инициализировать переменные, как вы это делаете здесь moznostm= .

#!/bin/bash

OPTIND=1

    moznostm=
    moznostl=
    moznosta=
    moznostb=
    while getopts "mlbah:" opt
    do
    case "$opt" in
    m)
    moznostm=$OPTARG
    echo "bol zadany argument $moznostm"
    ;;
    l)
    moznostl=$OPTARG
    echo "bol zadany argument $OPTARG"
    ;;
    b)
    moznostb=$OPTARG
    echo "bol zadany argument $OPTARG"
    ;;
    a)
    moznosta=$OPTARG
    echo "bol zadany argument $OPTARG"
    ;;
    h)
    echo "prazny"
    ;;
    esac
    done
shift "$((OPTIND-1))"

Выполните сценарий:

chmod +x scriptname && ./scripname -m
0
28.01.2020, 02:51

Вы должны вызвать свой скрипт с вариантом и вариантом-аргументом. Например:

bash yourscript -l argumentfor_l

Примечание также, что Moznost напечатано, но никогда не определяется.

1
28.01.2020, 02:51

Теги

Похожие вопросы