Использование замены команды Как ответа 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
Только несколько модификаций.
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
Вы должны вызвать свой скрипт с вариантом и вариантом-аргументом. Например:
bash yourscript -l argumentfor_l
Примечание также, что Moznost
напечатано, но никогда не определяется.