diff --git a/tests/scripts/quiet/cmake b/tests/scripts/quiet/cmake
index a79d757..4804637 100755
--- a/tests/scripts/quiet/cmake
+++ b/tests/scripts/quiet/cmake
@@ -16,15 +16,13 @@
 TOOL=$(basename "$0")
 
 # Locate original tool
-ORIGINAL_TOOL=$(type -ap ${TOOL} | grep -v "$0" | head -n1 )
+ORIGINAL_TOOL=$(type -ap "${TOOL}" | grep -v -Fx "$0" | head -n1 )
 
-quote_args() {
+print_quoted_args() {
     # similar to printf '%q' "$@"
     # but produce more human-readable results for common/simple cases like "a b"
-    local args=("$@")
-    s=""
-    for a in "${args[@]}"; do
-        simple_pattern='^([[:alnum:]_+-]+=)?([[:alnum:] _=+-]*)$'
+    for a in "$@"; do
+        simple_pattern='^([[:alnum:]_+-]+=)?([[:alnum:] _=+-./:@]*)$'
         if [[ $a =~ ' ' && $a =~ $simple_pattern ]]; then
             # a has spaces, but no other special characters that need escaping
             # (quoting after removing spaces yields no backslashes)
@@ -33,39 +31,40 @@
             #   CFLAGS=a b -> CFLAGS="a b"
             q="${BASH_REMATCH[1]}\"${BASH_REMATCH[2]}\""
         else
-            # get bash to do the quoting
+            # get bash to do the quoting (which may result in no quotes or escaping,
+            # if none is needed).
             q=$(printf '%q' "$a")
         fi
-        s="$s $q"
+        printf "%s " "$q"
     done
-    echo $s
 }
 
-if [[ ! " $@ " =~ " --version " ]]; then
+if [[ ! " $* " =~ " --version " ]]; then
     # Display the command being invoked - if it succeeds, this is all that will
     # be displayed. Don't do this for invocations with --version, because
     # this output is often parsed by scripts, so we don't want to modify it.
-    echo "${TOOL} $(quote_args "$@")"
+    printf %s "${TOOL} "
+    print_quoted_args "$@"
+    echo
 fi
 
 if [[ " $@ " =~ $NO_SILENCE || -n "${VERBOSE_LOGS}" ]]; then
     # Run original command with no output supression
-    ${ORIGINAL_TOOL} "$@"
-    EXIT_STATUS=$?
+    exec "${ORIGINAL_TOOL}" "$@"
 else
     # Run original command and capture output & exit status
-    TMPFILE=$(mktemp /tmp/quiet-${TOOL}.XXXXXX)
-    ${ORIGINAL_TOOL} "$@" > ${TMPFILE} 2>&1
+    TMPFILE=$(mktemp "quiet-${TOOL}.XXXXXX")
+    "${ORIGINAL_TOOL}" "$@" > "${TMPFILE}" 2>&1
     EXIT_STATUS=$?
 
     if [[ $EXIT_STATUS -ne 0 ]]; then
         # On error, display the full output
-        cat ${TMPFILE}
+        cat "${TMPFILE}"
     fi
 
     # Remove tmpfile
-    rm ${TMPFILE}
-fi
+    rm "${TMPFILE}"
 
-# Propagate the exit status
-exit $EXIT_STATUS
+    # Propagate the exit status
+    exit $EXIT_STATUS
+fi
diff --git a/tests/scripts/quiet/make b/tests/scripts/quiet/make
index 9722029..3eae91c 100755
--- a/tests/scripts/quiet/make
+++ b/tests/scripts/quiet/make
@@ -11,20 +11,18 @@
 # VERBOSE_LOGS=1
 
 # don't silence invocations containing these arguments
-NO_SILENCE=" --version | test "
+NO_SILENCE=" --version | test"
 
 TOOL=$(basename "$0")
 
 # Locate original tool
-ORIGINAL_TOOL=$(type -ap ${TOOL} | grep -v "$0" | head -n1 )
+ORIGINAL_TOOL=$(type -ap "${TOOL}" | grep -v -Fx "$0" | head -n1 )
 
-quote_args() {
+print_quoted_args() {
     # similar to printf '%q' "$@"
     # but produce more human-readable results for common/simple cases like "a b"
-    local args=("$@")
-    s=""
-    for a in "${args[@]}"; do
-        simple_pattern='^([[:alnum:]_+-]+=)?([[:alnum:] _=+-]*)$'
+    for a in "$@"; do
+        simple_pattern='^([[:alnum:]_+-]+=)?([[:alnum:] _=+-./:@]*)$'
         if [[ $a =~ ' ' && $a =~ $simple_pattern ]]; then
             # a has spaces, but no other special characters that need escaping
             # (quoting after removing spaces yields no backslashes)
@@ -33,39 +31,40 @@
             #   CFLAGS=a b -> CFLAGS="a b"
             q="${BASH_REMATCH[1]}\"${BASH_REMATCH[2]}\""
         else
-            # get bash to do the quoting
+            # get bash to do the quoting (which may result in no quotes or escaping,
+            # if none is needed).
             q=$(printf '%q' "$a")
         fi
-        s="$s $q"
+        printf "%s " "$q"
     done
-    echo $s
 }
 
-if [[ ! " $@ " =~ " --version " ]]; then
+if [[ ! " $* " =~ " --version " ]]; then
     # Display the command being invoked - if it succeeds, this is all that will
     # be displayed. Don't do this for invocations with --version, because
     # this output is often parsed by scripts, so we don't want to modify it.
-    echo "${TOOL} $(quote_args "$@")"
+    printf %s "${TOOL} "
+    print_quoted_args "$@"
+    echo
 fi
 
 if [[ " $@ " =~ $NO_SILENCE || -n "${VERBOSE_LOGS}" ]]; then
     # Run original command with no output supression
-    ${ORIGINAL_TOOL} "$@"
-    EXIT_STATUS=$?
+    exec "${ORIGINAL_TOOL}" "$@"
 else
     # Run original command and capture output & exit status
-    TMPFILE=$(mktemp /tmp/quiet-${TOOL}.XXXXXX)
-    ${ORIGINAL_TOOL} "$@" > ${TMPFILE} 2>&1
+    TMPFILE=$(mktemp "quiet-${TOOL}.XXXXXX")
+    "${ORIGINAL_TOOL}" "$@" > "${TMPFILE}" 2>&1
     EXIT_STATUS=$?
 
     if [[ $EXIT_STATUS -ne 0 ]]; then
         # On error, display the full output
-        cat ${TMPFILE}
+        cat "${TMPFILE}"
     fi
 
     # Remove tmpfile
-    rm ${TMPFILE}
-fi
+    rm "${TMPFILE}"
 
-# Propagate the exit status
-exit $EXIT_STATUS
+    # Propagate the exit status
+    exit $EXIT_STATUS
+fi
