In /usr/bin/xmlto line 20: FIND=find # This must be GNU find (need -maxdepth) ^--^ SC2209: Use var=$(command) to assign output (or quote to assign string). In /usr/bin/xmlto line 21: MKTEMP=mktemp # See http://www.mktemp.org if missing on your system ^----^ SC2034: MKTEMP appears unused. Verify use (or export if used externally). In /usr/bin/xmlto line 24: TAIL=/usr/bin/tail # a tail that supports -n (posix) ^--^ SC2034: TAIL appears unused. Verify use (or export if used externally). In /usr/bin/xmlto line 26: SED=/bin/sed # GNU sed, for modification of patterns ^-^ SC2034: SED appears unused. Verify use (or export if used externally). In /usr/bin/xmlto line 82: [ "$1" = "-d" ] && { dirflag="-d"; shift; } ^-----^ SC2034: dirflag appears unused. Verify use (or export if used externally). In /usr/bin/xmlto line 85: if eval $2='$(${MKTEMP} $dirflag "${TMPDIR:-/tmp}/${prefix}.XXXXXX")' ^-- SC2086: Double quote to prevent globbing and word splitting. Did you mean: if eval "$2"='$(${MKTEMP} $dirflag "${TMPDIR:-/tmp}/${prefix}.XXXXXX")' In /usr/bin/xmlto line 102: for asearchpath in "$1"; do ^--^ SC2066: Since you double quoted this, it will not word split, and the loop will only run once. In /usr/bin/xmlto line 120: : ${FORMAT_DIR=${prefix}/share/xmlto/format} ^-- SC2223: This default assignment may cause DoS due to globbing. Quote it. In /usr/bin/xmlto line 123: : ${SOURCE_FORMAT=docbook} ^----------------------^ SC2223: This default assignment may cause DoS due to globbing. Quote it. In /usr/bin/xmlto line 150: papername=`"$PAPERCONF_PATH" -n` ^--------------------^ SC2006: Use $(...) notation instead of legacy backticked `...`. Did you mean: papername=$("$PAPERCONF_PATH" -n) In /usr/bin/xmlto line 151: paperheight=`"$PAPERCONF_PATH" -mh | sed 's/ //g'` ^-- SC2006: Use $(...) notation instead of legacy backticked `...`. Did you mean: paperheight=$("$PAPERCONF_PATH" -mh | sed 's/ //g') In /usr/bin/xmlto line 152: paperwidth=`"$PAPERCONF_PATH" -mw | sed 's/ //g'` ^-- SC2006: Use $(...) notation instead of legacy backticked `...`. Did you mean: paperwidth=$("$PAPERCONF_PATH" -mw | sed 's/ //g') In /usr/bin/xmlto line 154: if [ -n "$paperheight" -a -n "$paperwidth" ] ^-- SC2166: Prefer [ p ] && [ q ] as [ p -a q ] is not well defined. In /usr/bin/xmlto line 157: cat << EOF > "$papersizemod" ^-----------^ SC2154: papersizemod is referenced but not assigned. In /usr/bin/xmlto line 210: cat << EOF > "$encodingmod" ^----------^ SC2154: encodingmod is referenced but not assigned. In /usr/bin/xmlto line 261: if [ x`$FOP_PATH -v 2>/dev/null | $GREP 0_[12]` = x ]; then ^-- SC2046: Quote this to prevent word splitting. ^-- SC2006: Use $(...) notation instead of legacy backticked `...`. Did you mean: if [ x$($FOP_PATH -v 2>/dev/null | $GREP 0_[12]) = x ]; then In /usr/bin/xmlto line 287: [ $? != 0 ] && { usage; exit 1; } ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?. In /usr/bin/xmlto line 302: cat /dev/stdin > ${TMP_STYLESHEET} ^---------------^ SC2086: Double quote to prevent globbing and word splitting. Did you mean: cat /dev/stdin > "${TMP_STYLESHEET}" In /usr/bin/xmlto line 340: VERBOSE=$((${VERBOSE}+1)) ^--------^ SC2004: $/${} is unnecessary on arithmetic variables. In /usr/bin/xmlto line 425: if [ -z "$DEST_FORMAT" -o -z "$INPUT_FILE" ] ^-- SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined. In /usr/bin/xmlto line 453: case $(echo $rootel) in ^-------------^ SC2116: Useless echo? Instead of 'cmd $(echo foo)', just use 'cmd foo'. ^-----^ SC2086: Double quote to prevent globbing and word splitting. Did you mean: case $(echo "$rootel") in In /usr/bin/xmlto line 503: if [ -n "$XSL_MODS" -a -n "$STYLESHEET" ] ^-- SC2166: Prefer [ p ] && [ q ] as [ p -a q ] is not well defined. In /usr/bin/xmlto line 529: cd "$XSLT_PROCESSED_DIR" ^----------------------^ SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails. Did you mean: cd "$XSLT_PROCESSED_DIR" || exit In /usr/bin/xmlto line 556: exit $(($xmllint_status + 10)) ^-------------^ SC2004: $/${} is unnecessary on arithmetic variables. In /usr/bin/xmlto line 585: printf >&2 "${XSLTPROC_PATH} ${XSLTOPTS} ${SEARCHPATH_FORMATTED} \\\\\n -o \"${PROF_PROCESSED}\" \\\\\n \"${PROFILE_STYLESHEET}\" \"${INPUT_FILE}\"\n" ^-- SC2059: Don't use variables in the printf format string. Use printf '..%s..' "$foo". In /usr/bin/xmlto line 611: printf >&2 "${XSLTPROC_PATH} ${XSLTOPTS} ${SEARCHPATH_FORMATTED} \\\\\n -o \"${XSLT_PROCESSED}\" \\\\\n \"${STYLESHEET}\" \\\\\n \"${PROF_PROCESSED}\"\n" ^-- SC2059: Don't use variables in the printf format string. Use printf '..%s..' "$foo". In /usr/bin/xmlto line 626: printf >&2 "${XSLTPROC_PATH} ${XSLTOPTS} ${SEARCHPATH_FORMATTED}\\\\\n -o \"${XSLT_PROCESSED}\" \\\\\n \"${STYLESHEET}\" \\\\\n \"${PROF_PROCESSED}\"\n" ^-- SC2059: Don't use variables in the printf format string. Use printf '..%s..' "$foo". In /usr/bin/xmlto line 628: eval "\"${XSLTPROC_PATH}\"" ${XSLTOPTS} ${SEARCHPATH_FORMATTED} -o "\"${XSLT_PROCESSED}\"" "\"${STYLESHEET}\"" "\"${PROF_PROCESSED}\"" ^---------^ SC2086: Double quote to prevent globbing and word splitting. ^---------------------^ SC2086: Double quote to prevent globbing and word splitting. Did you mean: eval "\"${XSLTPROC_PATH}\"" "${XSLTOPTS}" "${SEARCHPATH_FORMATTED}" -o "\"${XSLT_PROCESSED}\"" "\"${STYLESHEET}\"" "\"${PROF_PROCESSED}\"" For more information: https://www.shellcheck.net/wiki/SC2066 -- Since you double quoted this, it ... https://www.shellcheck.net/wiki/SC2034 -- MKTEMP appears unused. Verify use... https://www.shellcheck.net/wiki/SC2046 -- Quote this to prevent word splitt...