Мне нужно выполнить функцию, которая должна быть проверена, если переменная была правильно определена в bash и должна использовать связанное с ней значение.Как проверить, существует ли переменная и была ли она инициализирована
Например, эти переменные инициализируются в верхней части скрипта.
#!/bin/bash
var1_ID=0x04
var2_ID=0x05
var3_ID=0x06
var4_ID=0x09
Я хотел бы назвать именем тест сценария следующим образом:
./test var1
В настоящее время реализована функция:
function Get()
{
if [ $1"_ID" != "" ]; then
echo "here"
echo $(($1_ID))
else
exit 0
fi
}
Я не понимаю, почему я получаю here
даже если Я ввожу ./test toto
или что-то еще.
Нужно ли использовать определенную команду, например grep
?
Связано: [Как проверить, определена ли переменная в Bash до версии 4.2 с помощью опции оболочки nounset?] (Http://unix.stackexchange.com/a/56846/40596) – fedorqui
Кажется, никто это, но '$ 1" _ID "' будет оценивать '' _ID ", если' $ 1' не существует. И поэтому ВСЕГДА будет '! = До" "' –