2014-12-04 4 views
3

Я хотел бы проверить обе переменные в том же условии if.Проверьте, являются ли две переменные пустыми одновременно

В настоящее время я использую [[$ var]] для тестирования одного, но то же самое для двух переменных не работает.

Для того, чтобы сделать это, я попробовал:

if [[ &var1 && &var2 ]]; then 
or 
if [[ &ipAddress ]] && [[ &bcastAddress ]]; then 

Есть ли ограничения?

+3

Почему вы должны '&' перед переменными вместо '' $? – Barmar

ответ

5

Вы можете использовать этот комбинированный тест:

[[ -z "${var1}${var2}" ]] 

ИЛИ отдельных тестов в одном if состоянии:

[[ -z "$var1" && -z "$var2" ]] 
+1

Спасибо anubhava, он отлично работает – ogs

+0

Нет необходимости в двойных кавычках в '[[..]]'. – choroba

+0

Да, это правда, но это не вызывает никаких негативных последствий. ИМО-котировка в BASH должна поддерживаться как можно больше :) – anubhava

1

Я часто использую арифметики для такого рода вещей. Например:

case "$(((!${#var1}&&!${#var2})*${#ip}))" in 
(0) ! echo ERROR;; 
(${#bcast}) echo '$ips len is equal to $bcasts and neither are zero';; 
esac 

Конечно, вам не нужен case там:

[ "${#var1}${#var2}" -eq "$(((${#ip}&&${#bcast})?0:-1))" ] || handle_it 
Смежные вопросы