2014-12-04 22 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