2014-12-04 25 views
3

我想在同一條件下測試兩個變量。測試兩個變量是否同時爲空

目前我正在使用[[$ var]]測試一個,但兩個變量的測試不起作用。

爲了做到這一點我想:

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

是否有限制?

+3

爲什麼你有'&'的變量,而不是'$'之前? – Barmar 2014-12-04 10:15:14

回答

5

你可以使用這個組合測試:

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

或單獨的測試在同一if條件:

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

謝謝anubhava它工作正常 – ogs 2014-12-04 10:16:20

+0

'[[..]]'不需要雙引號。 – choroba 2014-12-04 10:21:56

+0

是的,這是真的,但它也不會造成任何不利影響。在BASH中引用IMO的習慣應儘可能保持:) – anubhava 2014-12-04 10:23:32

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