Command availability check on 'speed' script
diff --git a/speed.sh b/speed.sh
index c7b69cf..3c2de69 100755
--- a/speed.sh
+++ b/speed.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 #
 #  Copyright 2011 Sybren A. Stüvel <sybren@stuvel.eu>
 #
@@ -14,37 +14,43 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
+# Checks if a command is available on the system.
+check_command() {
+    # Return with error, if not called with just one argument.
+    if [ "$#" != 1 ]; then
+        echo "ERROR: Incorrect usage of function 'check_program'." 1>&2
+        echo "       Correct usage: check_command COMMAND" 1>&2
+        return 1
+    fi
+    # Check command availability.
+    command -v "$1" >/dev/null 2>&1
+}
+
+python_versions="
+    pypy
+    python2.5
+    python2.6
+    python2.7
+    python3.2
+    python3.3
+    python3.4
+    python3.5
+"
+
 echo "int2bytes speed test"
-echo "pypy"
-pypy -mtimeit -s'from rsa.transform import int2bytes; n = 1<<4096' 'int2bytes(n)'
-pypy -mtimeit -s'from rsa.transform import _int2bytes; n = 1<<4096' '_int2bytes(n)'
-echo "python2.5"
-python2.5 -mtimeit -s'from rsa.transform import int2bytes; n = 1<<4096' 'int2bytes(n)'
-python2.5 -mtimeit -s'from rsa.transform import _int2bytes; n = 1<<4096' '_int2bytes(n)'
-echo "python2.6"
-python2.6 -mtimeit -s'from rsa.transform import int2bytes; n = 1<<4096' 'int2bytes(n, 516)'
-python2.6 -mtimeit -s'from rsa.transform import _int2bytes; n = 1<<4096' '_int2bytes(n, 516)'
-echo "python2.7"
-python2.7 -mtimeit -s'from rsa.transform import int2bytes; n = 1<<4096' 'int2bytes(n)'
-python2.7 -mtimeit -s'from rsa.transform import _int2bytes; n = 1<<4096' '_int2bytes(n)'
-echo "python3.2"
-python3 -mtimeit -s'from rsa.transform import int2bytes; n = 1<<4096' 'int2bytes(n)'
-python3 -mtimeit -s'from rsa.transform import _int2bytes; n = 1<<4096' '_int2bytes(n)'
+for version in $python_versions; do
+    if check_command "$version"; then
+        echo "$version"
+        "$version" -mtimeit -s'from rsa.transform import int2bytes; n = 1<<4096' 'int2bytes(n)'
+        "$version" -mtimeit -s'from rsa.transform import _int2bytes; n = 1<<4096' '_int2bytes(n)'
+    fi
+done
 
 echo "bit_size speed test"
-echo "python2.5"
-python2.5 -mtimeit -s'from rsa.common import bit_size; n = 1<<4096' 'bit_size(n)'
-python2.5 -mtimeit -s'from rsa.common import _bit_size; n = 1<<4096' '_bit_size(n)'
-echo "python2.6"
-python2.6 -mtimeit -s'from rsa.common import bit_size; n = 1<<4096' 'bit_size(n)'
-python2.6 -mtimeit -s'from rsa.common import _bit_size; n = 1<<4096' '_bit_size(n)'
-echo "python2.7"
-python2.7 -mtimeit -s'from rsa.common import bit_size; n = 1<<4096' 'bit_size(n)'
-python2.7 -mtimeit -s'from rsa.common import _bit_size; n = 1<<4096' '_bit_size(n)'
-echo "python3.2"
-python3 -mtimeit -s'from rsa.common import bit_size; n = 1<<4096' 'bit_size(n)'
-python3 -mtimeit -s'from rsa.common import _bit_size; n = 1<<4096' '_bit_size(n)'
-echo "pypy"
-pypy -mtimeit -s'from rsa.common import bit_size; n = 1<<4096' 'bit_size(n)'
-pypy -mtimeit -s'from rsa.common import _bit_size; n = 1<<4096' '_bit_size(n)'
-
+for version in $python_versions; do
+    if check_command "$version"; then
+        echo "$version"
+        "$version" -mtimeit -s'from rsa.common import bit_size; n = 1<<4096' 'bit_size(n)'
+        "$version" -mtimeit -s'from rsa.common import _bit_size; n = 1<<4096' '_bit_size(n)'
+    fi
+done