diff --git a/jenkins-support b/jenkins-support
index 6174b86..0e3ea92 100755
--- a/jenkins-support
+++ b/jenkins-support
@@ -1,11 +1,11 @@
-#!/bin/bash -e
+#!/bin/bash -eu
 
 # compare if version1 < version2
 versionLT() {
-	local v1; v1=$(echo $1 | cut -d '-' -f 1 )
-	local q1; q1=$(echo $1 | cut -s -d '-' -f 2- )
-	local v2; v2=$(echo $2 | cut -d '-' -f 1 )
-	local q2; q2=$(echo $2 | cut -s -d '-' -f 2- )
+	local v1; v1=$(echo "$1" | cut -d '-' -f 1 )
+	local q1; q1=$(echo "$1" | cut -s -d '-' -f 2- )
+	local v2; v2=$(echo "$2" | cut -d '-' -f 1 )
+	local q2; q2=$(echo "$2" | cut -s -d '-' -f 2- )
 	if [ "$v1" = "$v2" ]; then
 		if [ "$q1" = "$q2" ]; then
 			return 1
@@ -16,21 +16,21 @@
 				if [ -z "$q2" ]; then
 					return 0
 				else
-					[  "$q1" = "`echo -e "$q1\n$q2" | sort -V | head -n1`" ]
+					[  "$q1" = "$(echo -e "$q1\n$q2" | sort -V | head -n1)" ]
 				fi
 			fi
 		fi
 	else
-		[  "$v1" = "`echo -e "$v1\n$v2" | sort -V | head -n1`" ]
+		[  "$v1" = "$(echo -e "$v1\n$v2" | sort -V | head -n1)" ]
 	fi
 }
 
 # returns a plugin version from a plugin archive
 get_plugin_version() {
 	local archive; archive=$1
-	local version; version=$(unzip -p $archive META-INF/MANIFEST.MF | grep "^Plugin-Version: " | sed -e 's#^Plugin-Version: ##')
+	local version; version=$(unzip -p "$archive" META-INF/MANIFEST.MF | grep "^Plugin-Version: " | sed -e 's#^Plugin-Version: ##')
 	version=${version%%[[:space:]]}
-	echo $version
+	echo "$version"
 }
 
 # Copy files from /usr/share/jenkins/ref into $JENKINS_HOME
@@ -50,11 +50,11 @@
 	local marker_version;
 	local log; log=false
 	if [[ ${rel} == plugins/*.jpi ]]; then
-	    container_version=$(get_plugin_version $JENKINS_HOME/${rel})
-        image_version=$(get_plugin_version ${f})
+	    container_version=$(get_plugin_version "$JENKINS_HOME/${rel}")
+        image_version=$(get_plugin_version "${f}")
 	    if [[ -e $JENKINS_HOME/${version_marker} ]]; then
-            marker_version=$(cat $JENKINS_HOME/${version_marker})
-            if versionLT $marker_version $container_version; then
+            marker_version=$(cat "$JENKINS_HOME/${version_marker}")
+            if versionLT "$marker_version" "$container_version"; then
                 action="SKIPPED"
                 reason="Installed version ($container_version) has been manually upgraded from initial version ($marker_version)"
                 log=true
@@ -63,7 +63,7 @@
                     action="SKIPPED"
                     reason="Version from image is the same as the installed version $image_version"
                 else
-                    if versionLT $image_version $container_version; then
+                    if versionLT "$image_version" "$container_version"; then
                         action="SKIPPED"
                         log=true
                         reason="Image version ($image_version) is older than installed version ($container_version)"
@@ -80,9 +80,9 @@
                     action="SKIPPED"
                     reason="Version from image is the same as the installed version $image_version (no marker found)"
                     # Add marker for next time
-                    echo $image_version > $JENKINS_HOME/${version_marker}
+                    echo "$image_version" > "$JENKINS_HOME/${version_marker}"
                 else
-                    if versionLT $image_version $container_version; then
+                    if versionLT "$image_version" "$container_version"; then
                         action="SKIPPED"
                         log=true
                         reason="Image version ($image_version) is older than installed version ($container_version) (no marker found)"
@@ -101,7 +101,7 @@
             cp -r "${f}" "$JENKINS_HOME/${rel}";
 		    # pin plugins on initial copy
 		    touch "$JENKINS_HOME/${rel}.pinned"
-            echo $image_version > $JENKINS_HOME/${version_marker}
+            echo "$image_version" > "$JENKINS_HOME/${version_marker}"
             reason=${reason:-$image_version}
         else
             action=${action:-"SKIPPED"}
