]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Fix style in catz test
authorWitold Kręcicki <wpk@isc.org>
Tue, 30 Oct 2018 12:15:19 +0000 (13:15 +0100)
committerWitold Kręcicki <wpk@isc.org>
Tue, 30 Oct 2018 19:08:11 +0000 (19:08 +0000)
bin/tests/system/catz/tests.sh

index 8b1aafb22abb12dab8a01cdf2b3887f3f10541aa..f9cc5a9bc32d600556444ac4d442f2bcda3dcdfe 100644 (file)
@@ -18,34 +18,34 @@ status=0
 n=0
 ##########################################################################
 echo_i "Testing adding/removing of domain in catalog zone"
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom1.example is not served by master ($n)"
 ret=0
 $DIG soa dom1.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding a domain dom1.example to master via RNDC ($n)"
 ret=0
 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom1.example.db
 echo "@ IN NS invalid." >> ns1/dom1.example.db
 $RNDCCMD 10.53.0.1 addzone dom1.example '{type master; file "dom1.example.db";};' || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom1.example is now served by master ($n)"
 ret=0
 $DIG soa dom1.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding domain dom1.example to catalog1 zone ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -53,10 +53,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add e721433b6160b450260d4f54b3ec8bab30cb3b83.zones.catalog1.example 3600 IN PTR dom1.example.
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -67,9 +67,9 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret = 0 ]; then
+if [ $ret -eq 0 ]; then
        ret=1
        try=0
        while test $try -lt 45
@@ -79,13 +79,13 @@ if [ $ret = 0 ]; then
                ret=0
                break
            }
-           try=`expr $try + 1`
+           try=$(($try+1))
        done
 fi
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom1.example is served by slave ($n)"
 for try in 0 1 2 3 4 5 6 7 8 9; do
     $DIG soa dom1.example @10.53.0.2 -p ${PORT} > dig.out.test$n
@@ -94,17 +94,17 @@ for try in 0 1 2 3 4 5 6 7 8 9; do
     [ $ret -eq 0 ] && break
     sleep 1
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that zone-directory is populated ($n)"
 ret=0
 [ -f "ns2/zonedir/__catz___default_catalog1.example_dom1.example.db" ] || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "removing domain dom1.example from catalog1 zone ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -112,10 +112,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
    update delete e721433b6160b450260d4f54b3ec8bab30cb3b83.zones.catalog1.example
    send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -126,47 +126,47 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom1.example is not served by slave ($n)"
 ret=0
 $DIG soa dom1.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that zone-directory is emptied ($n)"
 ret=0
 [ -f "ns2/zonedir/__catz___default_catalog1.example_dom1.example.db" ] && ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 ##########################################################################
 echo_i "Testing various simple operations on domains, including using multiple catalog zones and garbage in zone"
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "adding domain dom2.example to master via RNDC ($n)"
 ret=0
 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom2.example.db
 echo "@ IN NS invalid." >> ns1/dom2.example.db
 $RNDCCMD 10.53.0.1 addzone dom2.example '{type master; file "dom2.example.db";};' || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "adding domain dom4.example to master via RNDC ($n)"
 ret=0
 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom4.example.db
 echo "@ IN NS invalid." >> ns1/dom4.example.db
 $RNDCCMD 10.53.0.1 addzone dom4.example '{type master; file "dom4.example.db";};' || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "adding domains dom2.example, dom3.example and some garbage to catalog1 zone ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -185,10 +185,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     send
 
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "adding domain dom4.example to catalog2 zone ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -196,11 +196,11 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add de26b88d855397a03f77ff1162fd055d8b419584.zones.catalog2.example 3600 IN PTR dom4.example.
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -211,9 +211,9 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret = 0 ]; then
+if [ $ret -eq 0 ]; then
        ret=1
        try=0
        while test $try -lt 45
@@ -223,13 +223,13 @@ if [ $ret = 0 ]; then
                ret=0
                break
            }
-           try=`expr $try + 1`
+           try=$(($try+1))
        done
 fi
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom4.example is served by slave ($n)"
 for try in 0 1 2 3 4 5 6 7 8 9; do
     $DIG soa dom4.example @10.53.0.2 -p ${PORT} > dig.out.test$n
@@ -238,36 +238,36 @@ for try in 0 1 2 3 4 5 6 7 8 9; do
     [ $ret -eq 0 ] && break
     sleep 1
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom3.example is not served by master ($n)"
 ret=0
 $DIG soa dom3.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "adding a domain dom3.example to master via RNDC ($n)"
 ret=0
 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom3.example.db
 echo "@ IN NS invalid." >> ns1/dom3.example.db
 $RNDCCMD 10.53.0.1 addzone dom3.example '{type master; file "dom3.example.db"; also-notify { 10.53.0.2; }; notify explicit; };' || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom3.example is served by master ($n)"
 ret=0
 $DIG soa dom3.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -279,9 +279,9 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret = 0 ]; then
+if [ $ret -eq 0 ]; then
        ret=1
        try=0
        while test $try -lt 45
@@ -292,13 +292,13 @@ if [ $ret = 0 ]; then
                ret=0
                break
            }
-           try=`expr $try + 1`
+           try=$(($try+1))
        done
 fi
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom3.example is served by slave ($n)"
 for try in 0 1 2 3 4 5 6 7 8 9; do
     $DIG soa dom3.example @10.53.0.2 -p ${PORT} > dig.out.test$n
@@ -307,10 +307,10 @@ for try in 0 1 2 3 4 5 6 7 8 9; do
     [ $ret -eq 0 ] && break
     sleep 1
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "removing all records from catalog1 zone ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -329,10 +329,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     send
 
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "removing all records from catalog2 zone ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -340,12 +340,12 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update delete de26b88d855397a03f77ff1162fd055d8b419584.zones.catalog2.example 3600 IN PTR dom4.example.
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 ##########################################################################
 echo_i "Testing masters suboption and random labels"
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "adding dom5.example with a valid masters suboption (IP without TSIG) and a random label ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -354,10 +354,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add masters.somerandomlabel.zones.catalog1.example 3600 IN A 10.53.0.3
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -368,9 +368,9 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret = 0 ]; then
+if [ $ret -eq 0 ]; then
        ret=1
        try=0
        while test $try -lt 45
@@ -380,13 +380,13 @@ if [ $ret = 0 ]; then
                ret=0
                break
            }
-           try=`expr $try + 1`
+           try=$(($try+1))
        done
 fi
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom5.example is served by slave ($n)"
 for try in 0 1 2 3 4 5 6 7 8 9; do
     $DIG soa dom5.example @10.53.0.2 -p ${PORT} > dig.out.test$n
@@ -395,10 +395,10 @@ for try in 0 1 2 3 4 5 6 7 8 9; do
     [ $ret -eq 0 ] && break
     sleep 1
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "removing dom5.example ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -407,10 +407,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update delete masters.somerandomlabel.zones.catalog1.example 3600 IN A 10.53.0.3
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -421,23 +421,23 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom5.example is no longer served by slave ($n)"
 ret=0
 $DIG soa dom5.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 
 ##########################################################################
 echo_i "Testing masters global option"
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "adding dom6.example and a valid global masters option (IP without TSIG) ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -447,10 +447,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add 4346f565b4d63ddb99e5d2497ff22d04e878e8f8.zones.catalog1.example 3600 IN PTR dom6.example.
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -461,9 +461,9 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret = 0 ]; then
+if [ $ret -eq 0 ]; then
        ret=1
        try=0
        while test $try -lt 120
@@ -473,13 +473,13 @@ if [ $ret = 0 ]; then
                ret=0
                break
            }
-           try=`expr $try + 1`
+           try=$(($try+1))
        done
 fi
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom6.example is served by slave ($n)"
 try=0
 while test $try -lt 150
@@ -489,12 +489,12 @@ do
     grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
     [ $ret -eq 0 ] && break
     sleep 1
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "removing dom6.example ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -504,10 +504,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update delete 4346f565b4d63ddb99e5d2497ff22d04e878e8f8.zones.catalog1.example 3600 IN PTR dom6.example.
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -518,22 +518,22 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom6.example is no longer served by slave ($n)"
 ret=0
 $DIG soa dom6.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "adding dom6.example and an invalid global masters option (TSIG without IP) ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -542,10 +542,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add 4346f565b4d63ddb99e5d2497ff22d04e878e8f8.zones.catalog1.example 3600 IN PTR dom6.example.
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -556,9 +556,9 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret = 0 ]; then
+if [ $ret -eq 0 ]; then
        ret=1
        try=0
        while test $try -lt 45
@@ -569,13 +569,13 @@ if [ $ret = 0 ]; then
                ret=0
                break
            }
-           try=`expr $try + 1`
+           try=$(($try+1))
        done
 fi
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "removing dom6.example ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -584,10 +584,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update delete 4346f565b4d63ddb99e5d2497ff22d04e878e8f8.zones.catalog1.example 3600 IN PTR dom6.example.
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -598,46 +598,46 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 ##########################################################################
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Checking that a missing zone directory forces in-memory ($n)"
 ret=0
 grep "'nonexistent' not found; zone files will not be saved" ns2/named.run > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 ##########################################################################
 echo_i "Testing allow-query and allow-transfer ACLs"
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "adding domains dom7.example and dom8.example to master via RNDC ($n)"
 ret=0
 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom7.example.db
 echo "@ IN NS invalid." >> ns1/dom7.example.db
 $RNDCCMD 10.53.0.1 addzone dom7.example '{type master; file "dom7.example.db";};' || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom8.example.db
 echo "@ IN NS invalid." >> ns1/dom8.example.db
 $RNDCCMD 10.53.0.1 addzone dom8.example '{type master; file "dom8.example.db";};' || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom7.example is now served by master ($n)"
 ret=0
 $DIG soa dom7.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "adding domain dom7.example to catalog1 zone with an allow-query statement ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -646,10 +646,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add allow-query.78833ec3c0059fd4540fee81c7eaddce088e7cd7.zones.catalog1.example 3600 IN APL 1:10.53.0.1/32 !1:10.53.0.0/30 1:0.0.0.0/0
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -660,9 +660,9 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret = 0 ]; then
+if [ $ret -eq 0 ]; then
        ret=1
        try=0
        while test $try -lt 45
@@ -672,38 +672,38 @@ if [ $ret = 0 ]; then
                ret=0
                break
            }
-           try=`expr $try + 1`
+           try=$(($try+1))
        done
 fi
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom7.example is accessible from 10.53.0.1 ($n)"
 ret=0
 $DIG soa dom7.example -b 10.53.0.1 @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom7.example is not accessible from 10.53.0.2 ($n)"
 ret=0
 $DIG soa dom7.example -b 10.53.0.2 @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom7.example is accessible from 10.53.0.5 ($n)"
 ret=0
 $DIG soa dom7.example -b 10.53.0.5 @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "adding dom8.example domain and global allow-query and allow-transfer ACLs ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -713,10 +713,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add allow-transfer.catalog1.example 3600 IN APL 1:10.53.0.2/32
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -727,9 +727,9 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret = 0 ]; then
+if [ $ret -eq 0 ]; then
        ret=1
        try=0
        while test $try -lt 45
@@ -739,46 +739,46 @@ if [ $ret = 0 ]; then
                ret=0
                break
            }
-           try=`expr $try + 1`
+           try=$(($try+1))
        done
 fi
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom8.example is accessible from 10.53.0.1 ($n)"
 ret=0
 $DIG soa dom8.example -b 10.53.0.1 @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom8.example is not accessible from 10.53.0.2 ($n)"
 ret=0
 $DIG soa dom8.example -b 10.53.0.2 @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom8.example is not AXFR accessible from 10.53.0.1 ($n)"
 ret=0
 $DIG axfr dom8.example -b 10.53.0.1 @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "Transfer failed." dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom8.example is AXFR accessible from 10.53.0.2 ($n)"
 ret=0
 $DIG axfr dom8.example -b 10.53.0.2 @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep -v "Transfer failed." dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "deleting global allow-query and allow-domain ACLs ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -787,8 +787,8 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update delete allow-transfer.catalog1.example 3600 IN APL 1:10.53.0.2/32
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 ret=0
 try=0
 while test $try -lt 45
@@ -798,66 +798,66 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom8.example is accessible from 10.53.0.1 ($n)"
 ret=0
 $DIG soa dom8.example -b 10.53.0.1 @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom8.example is accessible from 10.53.0.2 ($n)"
 ret=0
 $DIG soa dom8.example -b 10.53.0.2 @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom8.example is AXFR accessible from 10.53.0.1 ($n)"
 ret=0
 $DIG axfr dom8.example -b 10.53.0.1 @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep -v "Transfer failed." dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom8.example is AXFR accessible from 10.53.0.2 ($n)"
 ret=0
 $DIG axfr dom8.example -b 10.53.0.2 @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep -v "Transfer failed." dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 
 ##########################################################################
 echo_i "Testing TSIG keys for masters set per-domain"
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "adding a domain dom9.example to master via RNDC, with transfers allowed only with TSIG key ($n)"
 ret=0
 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom9.example.db
 echo "@ IN NS invalid." >> ns1/dom9.example.db
 $RNDCCMD 10.53.0.1 addzone dom9.example '{type master; file "dom9.example.db"; allow-transfer { key tsig_key; }; };' || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom9.example is now served by master ($n)"
 ret=0
 $DIG soa dom9.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "adding domain dom9.example to catalog1 zone with a valid masters suboption (IP with TSIG) ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -867,10 +867,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add label1.masters.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example 3600 IN TXT "tsig_key"
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -881,9 +881,9 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret = 0 ]; then
+if [ $ret -eq 0 ]; then
        ret=1
        try=0
        while test $try -lt 45
@@ -893,21 +893,21 @@ if [ $ret = 0 ]; then
                ret=0
                break
            }
-           try=`expr $try + 1`
+           try=$(($try+1))
        done
 fi
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom9.example is accessible on slave ($n)"
 ret=0
 $DIG soa dom9.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "deleting domain dom9.example from catalog1 zone ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -917,10 +917,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update delete label1.masters.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example 3600 IN TXT "tsig_key"
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -931,22 +931,22 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom9.example is no longer accessible on slave ($n)"
 ret=0
 $DIG soa dom9.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "adding domain dom9.example to catalog1 zone with an invalid masters suboption (TSIG without IP) ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -955,10 +955,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add label1.masters.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example 3600 IN TXT "tsig_key"
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -969,9 +969,9 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret = 0 ]; then
+if [ $ret -eq 0 ]; then
        ret=1
        try=0
        while test $try -lt 45
@@ -982,13 +982,13 @@ if [ $ret = 0 ]; then
                ret=0
                break
            }
-           try=`expr $try + 1`
+           try=$(($try+1))
        done
 fi
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "deleting domain dom9.example from catalog1 zone ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -997,10 +997,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update delete label1.masters.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example 3600 IN TXT "tsig_key"
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -1011,41 +1011,41 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 ##########################################################################
 echo_i "Testing very long domain in catalog"
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that this.is.a.very.very.long.long.long.domain.that.will.cause.catalog.zones.to.generate.hash.instead.of.using.regular.filename.dom10.example is not served by master ($n)"
 ret=0
 $DIG soa this.is.a.very.very.long.long.long.domain.that.will.cause.catalog.zones.to.generate.hash.instead.of.using.regular.filename.dom10.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding a domain this.is.a.very.very.long.long.long.domain.that.will.cause.catalog.zones.to.generate.hash.instead.of.using.regular.filename.dom10.example to master via RNDC ($n)"
 ret=0
 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom10.example.db
 echo "@ IN NS invalid." >> ns1/dom10.example.db
 $RNDCCMD 10.53.0.1 addzone this.is.a.very.very.long.long.long.domain.that.will.cause.catalog.zones.to.generate.hash.instead.of.using.regular.filename.dom10.example '{type master; file "dom10.example.db";};' || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that this.is.a.very.very.long.long.long.domain.that.will.cause.catalog.zones.to.generate.hash.instead.of.using.regular.filename.dom10.example is now served by master ($n)"
 ret=0
 $DIG soa this.is.a.very.very.long.long.long.domain.that.will.cause.catalog.zones.to.generate.hash.instead.of.using.regular.filename.dom10.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding domain this.is.a.very.very.long.long.long.domain.that.will.cause.catalog.zones.to.generate.hash.instead.of.using.regular.filename.dom10.example to catalog1 zone ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -1053,10 +1053,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add 825f48b1ce1b4cf5a041d20255a0c8e98d114858.zones.catalog1.example 3600 IN PTR this.is.a.very.very.long.long.long.domain.that.will.cause.catalog.zones.to.generate.hash.instead.of.using.regular.filename.dom10.example.
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -1067,9 +1067,9 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret = 0 ]; then
+if [ $ret -eq 0 ]; then
        ret=1
        try=0
        while test $try -lt 45
@@ -1079,28 +1079,28 @@ if [ $ret = 0 ]; then
                ret=0
                break
            }
-           try=`expr $try + 1`
+           try=$(($try+1))
        done
 fi
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that this.is.a.very.very.long.long.long.domain.that.will.cause.catalog.zones.to.generate.hash.instead.of.using.regular.filename.dom10.example is served by slave ($n)"
 ret=0
 $DIG soa this.is.a.very.very.long.long.long.domain.that.will.cause.catalog.zones.to.generate.hash.instead.of.using.regular.filename.dom10.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that zone-directory is populated with a hashed filename ($n)"
 ret=0
 [ -f "ns2/zonedir/__catz__4d70696f2335687069467f11f5d5378c480383f97782e553fb2d04a7bb2a23ed.db" ] || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "removing domain this.is.a.very.very.long.long.long.domain.that.will.cause.catalog.zones.to.generate.hash.instead.of.using.regular.filename.dom10.example from catalog1 zone ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -1108,10 +1108,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
    update delete 825f48b1ce1b4cf5a041d20255a0c8e98d114858.zones.catalog1.example
    send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -1122,56 +1122,56 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that this.is.a.very.very.long.long.long.domain.that.will.cause.catalog.zones.to.generate.hash.instead.of.using.regular.filename.dom10.example is not served by slave ($n)"
 ret=0
 $DIG soa this.is.a.very.very.long.long.long.domain.that.will.cause.catalog.zones.to.generate.hash.instead.of.using.regular.filename.dom10.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that zone-directory is emptied ($n)"
 ret=0
 [ -f "ns2/zonedir/__catz__4d70696f2335687069467f11f5d5378c480383f97782e553fb2d04a7bb2a23ed.db" ] && ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 ##########################################################################
 echo_i "Testing adding a domain and a subdomain of it"
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom11.example is not served by master ($n)"
 ret=0
 $DIG soa dom11.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding a domain dom11.example to master via RNDC ($n)"
 ret=0
 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom11.example.db
 echo "@ IN NS invalid." >> ns1/dom11.example.db
 $RNDCCMD 10.53.0.1 addzone dom11.example '{type master; file "dom11.example.db";};' || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom11.example is now served by master ($n)"
 ret=0
 $DIG soa dom11.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding domain dom11.example to catalog1 zone ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -1179,10 +1179,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add 0580d70e769c86c8b951a488d8b776627f427d7a.zones.catalog1.example 3600 IN PTR dom11.example.
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -1193,9 +1193,9 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret = 0 ]; then
+if [ $ret -eq 0 ]; then
        ret=1
        try=0
        while test $try -lt 45
@@ -1205,13 +1205,13 @@ if [ $ret = 0 ]; then
                ret=0
                break
            }
-           try=`expr $try + 1`
+           try=$(($try+1))
        done
 fi
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom11.example is served by slave ($n)"
 for try in 0 1 2 3 4 5 6 7 8 9; do
     $DIG soa dom11.example @10.53.0.2 -p ${PORT} > dig.out.test$n
@@ -1220,37 +1220,37 @@ for try in 0 1 2 3 4 5 6 7 8 9; do
     [ $ret -eq 0 ] && break
     sleep 1
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that subdomain.of.dom11.example is not served by master ($n)"
 ret=0
 $DIG soa subdomain.of.dom11.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: NXDOMAIN" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding a domain subdomain.of.dom11.example to master via RNDC ($n)"
 ret=0
 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/subdomain.of.dom11.example.db
 echo "@ IN NS invalid." >> ns1/subdomain.of.dom11.example.db
 $RNDCCMD 10.53.0.1 addzone subdomain.of.dom11.example '{type master; file "subdomain.of.dom11.example.db";};' || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that subdomain.of.dom11.example is now served by master ($n)"
 ret=0
 $DIG soa subdomain.of.dom11.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding domain subdomain.of.dom11.example to catalog1 zone ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -1258,10 +1258,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add 25557e0bdd10cb3710199bb421b776df160f241e.zones.catalog1.example 3600 IN PTR subdomain.of.dom11.example.
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -1272,9 +1272,9 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret = 0 ]; then
+if [ $ret -eq 0 ]; then
        ret=1
        try=0
        while test $try -lt 45
@@ -1284,13 +1284,13 @@ if [ $ret = 0 ]; then
                ret=0
                break
            }
-           try=`expr $try + 1`
+           try=$(($try+1))
        done
 fi
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that subdomain.of.dom11.example is served by slave ($n)"
 for try in 0 1 2 3 4 5 6 7 8 9; do
     $DIG soa subdomain.of.dom11.example @10.53.0.2 -p ${PORT} > dig.out.test$n
@@ -1299,12 +1299,12 @@ for try in 0 1 2 3 4 5 6 7 8 9; do
     [ $ret -eq 0 ] && break
     sleep 1
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "removing domain dom11.example from catalog1 zone ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -1312,10 +1312,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
    update delete 0580d70e769c86c8b951a488d8b776627f427d7a.zones.catalog1.example
    send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -1326,28 +1326,28 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom11.example is not served by slave ($n)"
 ret=0
 $DIG soa dom11.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that subdomain.of.dom11.example is still served by slave ($n)"
 ret=0
 $DIG soa subdomain.of.dom11.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "removing domain subdomain.of.dom11.example from catalog1 zone ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -1355,10 +1355,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
    update delete 25557e0bdd10cb3710199bb421b776df160f241e.zones.catalog1.example
    send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -1369,50 +1369,50 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that subdomain.of.dom11.example is not served by slave ($n)"
 ret=0
 $DIG soa subdomain.of.dom11.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 
 ##########################################################################
 echo_i "Testing adding a catalog zone at runtime with rndc reconfig"
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom12.example is not served by master ($n)"
 ret=0
 $DIG soa dom12.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding a domain dom12.example to master via RNDC ($n)"
 ret=0
 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom12.example.db
 echo "@ IN NS invalid." >> ns1/dom12.example.db
 $RNDCCMD 10.53.0.1 addzone dom12.example '{type master; file "dom12.example.db";};' || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom12.example is now served by master ($n)"
 ret=0
 $DIG soa dom12.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding domain dom12.example to catalog4 zone ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -1420,28 +1420,28 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add 871d51e5433543c0f6fb263c40f359fbc152c8ae.zones.catalog4.example 3600 IN PTR dom12.example.
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom12.example is not served by slave ($n)"
 ret=0
 $DIG soa dom12.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "reconfiguring slave - adding catalog4 catalog zone ($n)"
 ret=0
 cat ns2/named.conf.in |sed -e "s/^#T1//g" > ns2/named.conf.tmp
 copy_setports ns2/named.conf.tmp ns2/named.conf
 $RNDCCMD 10.53.0.2 reconfig || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -1452,9 +1452,9 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret = 0 ]; then
+if [ $ret -eq 0 ]; then
        ret=1
        try=0
        while test $try -lt 45
@@ -1464,20 +1464,20 @@ if [ $ret = 0 ]; then
                ret=0
                break
            }
-           try=`expr $try + 1`
+           try=$(($try+1))
        done
 fi
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom7.example is still served by slave after reconfiguration ($n)"
 ret=0
 $DIG soa dom7.example -b 10.53.0.1 @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
-n=`expr $n + 1`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
+n=$(($n+1))
 
 echo_i "checking that dom12.example is served by slave ($n)"
 for try in 0 1 2 3 4 5 6 7 8 9; do
@@ -1487,35 +1487,35 @@ for try in 0 1 2 3 4 5 6 7 8 9; do
     [ $ret -eq 0 ] && break
     sleep 1
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "reconfiguring slave - removing catalog4 catalog zone, adding non-existent catalog5 catalog zone ($n)"
 ret=0
 cat ns2/named.conf.in | sed -e "s/^#T2//" > ns2/named.conf.tmp
 copy_setports ns2/named.conf.tmp ns2/named.conf
 $RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reconfig > /dev/null 2>&1 && ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "reconfiguring slave - removing non-existent catalog5 catalog zone ($n)"
 ret=0
 copy_setports ns2/named.conf.in ns2/named.conf
 $RNDCCMD 10.53.0.2 reconfig || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom12.example is not served by slave ($n)"
 ret=0
 $DIG soa dom12.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "removing domain dom12.example from catalog4 zone ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -1523,59 +1523,59 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update delete 871d51e5433543c0f6fb263c40f359fbc152c8ae.zones.catalog4.example 3600 IN PTR dom12.example.
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 ##########################################################################
 echo_i "Testing having a zone in two different catalogs"
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom13.example is not served by master ($n)"
 ret=0
 $DIG soa dom13.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding a domain dom13.example to master ns1 via RNDC ($n)"
 ret=0
 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom13.example.db
 echo "@ IN NS invalid." >> ns1/dom13.example.db
 echo "@ IN A 192.0.2.1" >> ns1/dom13.example.db
 $RNDCCMD 10.53.0.1 addzone dom13.example '{type master; file "dom13.example.db";};' || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom13.example is now served by master ns1 ($n)"
 ret=0
 $DIG soa dom13.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding a domain dom13.example to master ns3 via RNDC ($n)"
 ret=0
 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns3/dom13.example.db
 echo "@ IN NS invalid." >> ns3/dom13.example.db
 echo "@ IN A 192.0.2.2" >> ns3/dom13.example.db
 $RNDCCMD 10.53.0.3 addzone dom13.example '{type master; file "dom13.example.db";};' || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom13.example is now served by master ns3 ($n)"
 ret=0
 $DIG soa dom13.example @10.53.0.3 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding domain dom13.example to catalog1 zone with ns1 as master ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -1584,10 +1584,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add masters.8d7989c746b3f92b3bba2479e72afd977198363f.zones.catalog1.example 3600 IN A 10.53.0.1
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -1598,9 +1598,9 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret = 0 ]; then
+if [ $ret -eq 0 ]; then
        ret=1
        try=0
        while test $try -lt 45
@@ -1610,24 +1610,24 @@ if [ $ret = 0 ]; then
                ret=0
                break
            }
-           try=`expr $try + 1`
+           try=$(($try+1))
        done
 fi
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom13.example is served by slave and that it's the one from ns1 ($n)"
 ret=0
 $DIG a dom13.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
 grep "192.0.2.1" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding domain dom13.example to catalog2 zone with ns3 as master ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -1636,10 +1636,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add masters.8d7989c746b3f92b3bba2479e72afd977198363f.zones.catalog2.example 3600 IN A 10.53.0.3
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -1650,23 +1650,23 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom13.example is served by slave and that it's still the one from ns1 ($n)"
 ret=0
 $DIG a dom13.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
 grep "192.0.2.1" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Deleting domain dom13.example from catalog2 ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -1675,10 +1675,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update delete masters.8d7989c746b3f92b3bba2479e72afd977198363f.zones.catalog2.example 3600 IN A 10.53.0.3
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -1689,21 +1689,21 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom13.example is served by slave and that it's still the one from ns1 ($n)"
 ret=0
 $DIG a dom13.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
 grep "192.0.2.1" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Deleting domain dom13.example from catalog1 ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -1712,10 +1712,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update delete masters.8d7989c746b3f92b3bba2479e72afd977198363f.zones.catalog1.example 3600 IN A 10.53.0.2
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -1726,75 +1726,75 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom13.example is no longer served by slave ($n)"
 ret=0
 $DIG a dom13.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 ##########################################################################
 echo_i "Testing having a regular zone and a zone in catalog zone of the same name"
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom14.example is not served by master ($n)"
 ret=0
 $DIG soa dom14.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding a domain dom14.example to master ns1 via RNDC ($n)"
 ret=0
 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom14.example.db
 echo "@ IN NS invalid." >> ns1/dom14.example.db
 echo "@ IN A 192.0.2.1" >> ns1/dom14.example.db
 $RNDCCMD 10.53.0.1 addzone dom14.example '{type master; file "dom14.example.db";};' || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom14.example is now served by master ns1 ($n)"
 ret=0
 $DIG soa dom14.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding a domain dom14.example to master ns3 via RNDC ($n)"
 ret=0
 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns3/dom14.example.db
 echo "@ IN NS invalid." >> ns3/dom14.example.db
 echo "@ IN A 192.0.2.2" >> ns3/dom14.example.db
 $RNDCCMD 10.53.0.3 addzone dom14.example '{type master; file "dom14.example.db";};' || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom14.example is now served by master ns3 ($n)"
 ret=0
 $DIG soa dom14.example @10.53.0.3 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding domain dom14.example with rndc with ns1 as master ($n)"
 ret=0
 $RNDCCMD 10.53.0.2 addzone dom14.example '{type slave; masters {10.53.0.1;};};' || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -1805,23 +1805,23 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom14.example is served by slave and that it's the one from ns1 ($n)"
 ret=0
 $DIG a dom14.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
 grep "192.0.2.1" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding domain dom14.example to catalog2 zone with ns3 as master ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -1830,10 +1830,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add masters.45e3d45ea5f7bd01c395ccbde6ae2e750a3ee8ab.zones.catalog2.example 3600 IN A 10.53.0.3
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -1844,23 +1844,23 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom14.example is served by slave and that it's still the one from ns1 ($n)"
 ret=0
 $DIG a dom14.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
 grep "192.0.2.1" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Deleting domain dom14.example from catalog2 ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -1869,10 +1869,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update delete masters.45e3d45ea5f7bd01c395ccbde6ae2e750a3ee8ab.zones.catalog2.example 3600 IN A 10.53.0.3
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -1883,46 +1883,46 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom14.example is served by slave and that it's still the one from ns1 ($n)"
 ret=0
 $DIG a dom14.example @10.53.0.2 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
 grep "192.0.2.1" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 ##########################################################################
 echo_i "Testing changing label for a member zone"
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom15.example is not served by master ($n)"
 ret=0
 $DIG soa dom15.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: REFUSED" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Adding a domain dom15.example to master ns1 via RNDC ($n)"
 ret=0
 echo "@ 3600 IN SOA . . 1 3600 3600 3600 3600" > ns1/dom15.example.db
 echo "@ IN NS invalid." >> ns1/dom15.example.db
 $RNDCCMD 10.53.0.1 addzone dom15.example '{type master; file "dom15.example.db";};' || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom15.example is now served by master ns1 ($n)"
 ret=0
 $DIG soa dom15.example @10.53.0.1 -p ${PORT} > dig.out.test$n
 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
 
@@ -1933,10 +1933,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add dom15label1.zones.catalog1.example 3600 IN PTR dom15.example.
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -1947,14 +1947,14 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 sleep 3
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom15.example is served by slave ($n)"
 for try in 0 1 2 3 4 5 6 7 8 9; do
     $DIG soa dom15.example @10.53.0.2 -p ${PORT} > dig.out.test$n
@@ -1963,12 +1963,12 @@ for try in 0 1 2 3 4 5 6 7 8 9; do
     [ $ret -eq 0 ] && break
     sleep 1
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 cur=`awk 'BEGIN {l=0} /^/ {l++} END { print l }' ns2/named.run`
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "Changing label of domain dom15.example from 'dom15label1' to 'dom15label2' ($n)"
 ret=0
 $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
@@ -1977,10 +1977,10 @@ $NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
     update add dom15label2.zones.catalog1.example 3600 IN PTR dom15.example.
     send
 END
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "waiting for slave to sync up ($n)"
 ret=1
 try=0
@@ -1991,12 +1991,12 @@ do
        ret=0
        break
     }
-    try=`expr $try + 1`
+    try=$(($try+1))
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
-n=`expr $n + 1`
+n=$(($n+1))
 echo_i "checking that dom15.example is served by slave ($n)"
 for try in 0 1 2 3 4 5 6 7 8 9; do
     $DIG soa dom15.example @10.53.0.2 -p ${PORT} > dig.out.test$n
@@ -2005,8 +2005,8 @@ for try in 0 1 2 3 4 5 6 7 8 9; do
     [ $ret -eq 0 ] && break
     sleep 1
 done
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+if [ $ret -ne 0 ]; then echo_i "failed"; fi
+status=$(($status+$ret))
 
 echo_i "exit status: $status"
 [ $status -eq 0 ] || exit 1