diff --git a/.travis.yml b/.travis.yml
index 0e79aa9..161f726 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,7 +3,7 @@
 - clang
 - gcc
 before_install: sudo apt-get update
-install: sudo apt-get install bc gnutls-bin valgrind perl
+install: sudo apt-get install gnutls-bin valgrind perl
 script:
 - cmake -D CMAKE_BUILD_TYPE:String="Check" .
 - make
diff --git a/tests/compat.sh b/tests/compat.sh
index cff581d..e4f5a46 100755
--- a/tests/compat.sh
+++ b/tests/compat.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 
 # Test interop with OpenSSL and GnuTLS (and self-op while at it).
 #
@@ -19,10 +19,10 @@
 fi
 
 # initialise counters
-let "tests = 0"
-let "failed = 0"
-let "skipped = 0"
-let "srvmem = 0"
+TESTS=0
+FAILED=0
+SKIPPED=0
+SRVMEM=0
 
 # default commands, can be overriden by the environment
 : ${P_SRV:=../programs/ssl/ssl_server2}
@@ -791,7 +791,7 @@
     if [ "$MEMCHECK" -gt 0 ]; then
         if is_polar "$SERVER_CMD" && has_mem_err $SRV_OUT; then
             echo "  ! Server had memory errors"
-            let "srvmem++"
+            SRVMEM=$(( $SRVMEM + 1 ))
             return
         fi
     fi
@@ -826,12 +826,12 @@
 # run_client <name> <cipher>
 run_client() {
     # announce what we're going to do
-    let "tests++"
+    TESTS=$(( $TESTS + 1 ))
     VERIF=$(echo $VERIFY | tr '[:upper:]' '[:lower:]')
-    TITLE="${1:0:1}->${SERVER_NAME:0:1} $MODE,$VERIF $2"
+    TITLE="`echo $1 | head -c1`->`echo $SERVER_NAME | head -c1`"
+    TITLE="$TITLE $MODE,$VERIF $2"
     echo -n "$TITLE "
-    LEN=`echo "$TITLE" | wc -c`
-    LEN=`echo 72 - $LEN | bc`
+    LEN=$(( 72 - `echo "$TITLE" | wc -c` ))
     for i in `seq 1 $LEN`; do echo -n '.'; done; echo -n ' '
 
     # run the command and interpret result
@@ -843,7 +843,7 @@
             ( echo -e 'GET HTTP/1.0'; echo; ) | $CLIENT_CMD >> $CLI_OUT 2>&1 &
             wait_client_done
 
-            if [ "$EXIT" == "0" ]; then
+            if [ $EXIT -eq 0 ]; then
                 RESULT=0
             else
                 if grep 'Cipher is (NONE)' $CLI_OUT >/dev/null; then
@@ -861,7 +861,7 @@
             ( echo -e 'GET HTTP/1.0'; echo; ) | $CLIENT_CMD >> $CLI_OUT 2>&1 &
             wait_client_done
 
-            if [ "$EXIT" == "0" ]; then
+            if [ $EXIT -eq 0 ]; then
                 RESULT=0
             else
                 RESULT=2
@@ -915,14 +915,14 @@
             ;;
         "1")
             echo SKIP
-            let "skipped++"
+            SKIPPED=$(( $SKIPPED + 1 ))
             ;;
         "2")
             echo FAIL
-            cp $SRV_OUT c-srv-${tests}.log
-            cp $CLI_OUT c-cli-${tests}.log
-            echo "  ! outputs saved to c-srv-${tests}.log, c-cli-${tests}.log"
-            let "failed++"
+            cp $SRV_OUT c-srv-${TESTS}.log
+            cp $CLI_OUT c-cli-${TESTS}.log
+            echo "  ! outputs saved to c-srv-${TESTS}.log, c-cli-${TESTS}.log"
+            FAILED=$(( $FAILED + 1 ))
             ;;
     esac
 
@@ -1080,7 +1080,7 @@
 
 echo "------------------------------------------------------------------------"
 
-if (( failed != 0 || srvmem != 0 ));
+if [ $FAILED -ne 0 -o $SRVMEM -ne 0 ];
 then
     echo -n "FAILED"
 else
@@ -1088,13 +1088,13 @@
 fi
 
 if [ "$MEMCHECK" -gt 0 ]; then
-    MEMREPORT=", $srvmem server memory errors"
+    MEMREPORT=", $SRVMEM server memory errors"
 else
     MEMREPORT=""
 fi
 
-let "passed = tests - failed"
-echo " ($passed / $tests tests ($skipped skipped$MEMREPORT))"
+PASSED=$(( $TESTS - $FAILED ))
+echo " ($PASSED / $TESTS tests ($SKIPPED skipped$MEMREPORT))"
 
-let "failed += srvmem"
-exit $failed
+FAILED=$(( $FAILED + $SRVMEM ))
+exit $FAILED
diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh
index 225df96..070d2ce 100755
--- a/tests/ssl-opt.sh
+++ b/tests/ssl-opt.sh
@@ -97,12 +97,11 @@
 # print_name <name>
 print_name() {
     echo -n "$1 "
-    LEN=`echo "$1" | wc -c`
-    LEN=`echo 72 - $LEN | bc`
+    LEN=$(( 72 - `echo "$1" | wc -c` ))
     for i in `seq 1 $LEN`; do echo -n '.'; done
     echo -n ' '
 
-    TESTS=`echo $TESTS + 1 | bc`
+    TESTS=$(( $TESTS + 1 ))
 }
 
 # fail <message>
@@ -114,7 +113,7 @@
     cp $CLI_OUT o-cli-${TESTS}.log
     echo "  ! outputs saved to o-srv-${TESTS}.log and o-cli-${TESTS}.log"
 
-    FAILS=`echo $FAILS + 1 | bc`
+    FAILS=$(( $FAILS + 1 ))
 }
 
 # is_polar <cmd_line>
@@ -190,7 +189,7 @@
     if [ "X$SKIP_NEXT" = "XYES" ]; then
         SKIP_NEXT="NO"
         echo "SKIP"
-        SKIPS=`echo $SKIPS + 1 | bc`
+        SKIPS=$(( $SKIPS + 1 ))
         return
     fi
 
@@ -1845,7 +1844,7 @@
 else
     echo -n "FAILED"
 fi
-PASSES=`echo $TESTS - $FAILS | bc`
+PASSES=$(( $TESTS - $FAILS ))
 echo " ($PASSES / $TESTS tests ($SKIPS skipped))"
 
 exit $FAILS
