Использование [[ -z "$var" ]]
- это самый простой способ узнать, была ли переменная установлена или нет, но эта опция -z
не различает неустановленную переменную и переменную, установленную в пустую строку:
$ set=''
$ [[ -z "$set" ]] && echo "Set" || echo "Unset"
Unset
$ [[ -z "$unset" ]] && echo "Set" || echo "Unset"
Unset
Лучше проверить это в соответствии с типом переменной: переменная env, параметр или обычная переменная.
Для переменной env:
[[ $(env | grep "varname=" | wc -l) -eq 1 ]] && echo "Set" || echo "Unset"
Для параметра (например, для проверки существования параметра $5
):
[[ $# -ge 5 ]] && echo "Set" || echo "Unset"
Для регулярной переменной (используя вспомогательную функцию, чтобы сделать это элегантным образом):
function declare_var {
declare -p "$1" &> /dev/null
}
declare_var "var_name" && echo "Set" || echo "Unset"
Примечания:
$#
: дает вам количество позиционных параметров.declare -p
: дает определение переменной, переданной в качестве параметра. Если он существует, возвращает 0, если нет, возвращает 1 и печатает сообщение об ошибке.&> /dev/null
: подавляет вывод изdeclare -p
, не влияя на его код возврата.
Просто реализуйте интерфейс org.springframework.beans.factory.BeanNameAware , и вы получите его автоматически. У него есть один метод:
void setBeanName(String name)