У меня есть Баш скрипт, который начинается так:Баш скрипт выбора переменной на основе параметра командной строки
#!/bin/bash
systemStateGlobalSystemState=.1.3.6.1.4.1.674.10909.1.200.10.1.2
systemStateChassisStatus=.1.3.6.1.4.1.674.10909.1.200.10.1.4
systemStateVoltageStatusCombined=.1.3.6.1.4.1.674.10909.1.200.10.1.12
systemStateTemperatureStatusCombined=.1.3.6.1.4.1.674.10909.1.200.10.1.24
systemStateMemoryDeviceStatusCombined=.1.3.6.1.4.1.674.10909.1.200.10.1.27
systemStateChassisIntrusionStatusCombined=.1.3.6.1.4.1.674.10909.1.200.10.1.30
operatingSystemMemoryStatus=.1.3.6.1.4.1.674.10909.1.400.20.1.4
RESULT=$(/usr/local/nagios/libexec/check_snmp -H $1 -o $2 -c $3)
CODE=$(echo $RESULT | awk '{print $4}')
То, что я пытаюсь сделать, это если кто-то за $ 2 параметр командной строки входит operatingSystemMemoryStatus как я выбрать предопределенное значение для него в скрипте? Итак, где $ 2 выше указано в RESULT, как мне получить эту команду для использования значения .1.3.6.1.4.1.674.10909.1.400.20.1.4?
Так что, если я вошел
check_snmp 192.168.0.1 operatingSystemMemoryStatus public script
бы:
/usr/local/nagios/libexec/check_snmp -H 192.168.0.1 -o .1.3.6.1.4.1.674.10909.1.400.20.1.4 -c public
Как я могу это сделать?
Возможный дубликат (http://stackoverflow.com/questions/ 192249/how-do-i-parse-command-line-arguments-in-bash) –
Не дубликат. Это сообщение не показывает, как принимать параметры командной строки и назначать значение на основе существующей определенной переменной с тем же именем. – John
Вы можете использовать ассоциативный массив, как в [этом вопросе] (http://stackoverflow.com/questions/16553089/bash-dynamic-variable-names). – Corubba