Page MenuHomePhabricator

Shell/Python/other scripts should not be generated by ERB files; dynamic parts should be a simple ERB config file
Open, MediumPublic

Description

We have many scripts that are defined as ERB templates.

We often make simple errors when editing them, as there's no tooling for dealing with such a format -- and in fact it's quite hard to write tooling for such, given the format of Puppet catalogs (which elides which template file produced a given generated file).

Instead, let's forbid scripts being generated from templates. (And also set up shellcheck for .sh files.)

original/deprecated follows

Ideally CI would automatically expand the templates as best it could*, and then run all the 'usual' checks we'd run for such a language. However, there's several tricky parts of doing that. Having a way to specify (in a puppet spec test?) to run shell/Python checks on a template given certain inputs might be more achievable.

We could also make this a wrapper around PCC for manual testing of a few key scripts, to start with, if that was easier. Here's a v0 proof of concept that, given PCC output to expand the templates, yoinks the script out of the post-change catalog and runs it through shellcheck (which identifies an issue that caused problems when the patch was merged):

% curl -s https://puppet-compiler.wmflabs.org/compiler1003/22927/puppetmaster1002.eqiad.wmnet/change.puppetmaster1002.eqiad.wmnet.pson \
    | jq -r '.resources[] | select(.title == "/usr/local/bin/puppet-merge") | .parameters.content' \
    | shellcheck -

In - line 181:
if [ $LABS_PRIVATE -eq 1 -a ${LABS_EXIT} -ne 99]; then
^-- SC1009: The mentioned syntax error was in this if expression.
   ^-- SC1073: Couldn't parse this test expression. Fix to allow more checks.
                                                ^-- SC1020: You need a space before the ].
                                                ^-- SC1072: Missing space before ]. Fix any mentioned problems and try again.

Details

ProjectBranchLines +/-Subject
operations/puppetproduction+18 -20
operations/puppetproduction+3 -2
operations/puppetproduction+1 -6
operations/puppetproduction+1 -4
operations/puppetproduction+0 -2
operations/puppetproduction+36 -19
operations/puppetproduction+43 -2
operations/puppetproduction+55 -50
operations/puppetproduction+7 -13
operations/puppetproduction+13 -5
operations/puppetproduction+5 -4
operations/puppetproduction+12 -11
operations/puppetproduction+1 -1
operations/puppetproduction+1 -1
operations/puppetproduction+5 -3
operations/puppetproduction+10 -3
operations/puppetproduction+16 -4
operations/puppetproduction+3 -5
integration/configmaster+2 -2
integration/configmaster+10 -0
operations/puppetproduction+37 -37
operations/puppetproduction+61 -39
operations/puppetproduction+1 -1
operations/puppetproduction+6 -3
integration/configmaster+2 -2
integration/configmaster+8 -1
operations/puppetproduction+22 -17
operations/puppetproduction+24 -23
operations/puppetproduction+3 -2
operations/puppetproduction+14 -14
operations/puppetproduction+7 -7
Show related patches Customize query in gerrit

Event Timeline

CDanis created this task.Jun 4 2020, 2:20 PM
Restricted Application added a subscriber: Aklapper. · View Herald TranscriptJun 4 2020, 2:20 PM
jbond triaged this task as Medium priority.Jun 4 2020, 4:44 PM
jbond added a project: User-jbond.
jbond added a comment.EditedJun 4 2020, 5:56 PM

This is a great idea, i think we may be able to do it in a rake task by adding something to task gen, the biggest issues with adding stuff like this is fixing all of the current issues. the wmf_style checks dose avoid this by only alerting on new errors but i have not looked at it. We should also add shellcheck for sh files in general

hiere is the current list of violations, just here for my refrence, im on clinic next week so will see how many of theses are simple to correct

$ find modules -path modules/admin/files/home -prune -o -name \*.sh -exec shellcheck {} \;
In modules/deployment/files/umask-wikidev-profile-d.sh line 1:
# !this file is managed by puppet!
^-- SC2096: On most OS, shebangs can only specify a single parameter.
^-- SC1008: This shebang was unrecognized. Note that ShellCheck only handles sh/bash/dash/ksh.
 ^-- SC1115: Remove spaces between # and ! in the shebang.


In modules/mailman/files/scripts/disable_list.sh line 10:
    echo "advertised=0" | config_list -i /dev/stdin $list
                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/disable_list.sh line 11:
    echo "emergency=1"  | config_list -i /dev/stdin $list
                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/disable_list.sh line 12:
    echo "member_moderation_action=2" | config_list -i /dev/stdin $list
                                                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/disable_list.sh line 13:
    echo "generic_nonmember_action=2" | config_list -i /dev/stdin $list
                                                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/disable_list.sh line 14:
    echo "ban_list=['^.*@.*']" | config_list -i /dev/stdin $list
                                                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/disable_list.sh line 15:
    if find /var/lib/mailman/data/ | grep heldmsg-$list; then
                                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/disable_list.sh line 16:
        rm /var/lib/mailman/data/heldmsg-$list-*.pck
                                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/disable_list.sh line 21:
    echo "advertised=1" | config_list -i /dev/stdin $list
                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/disable_list.sh line 22:
    echo "emergency=0"  | config_list -i /dev/stdin $list
                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/disable_list.sh line 23:
    echo "member_moderation_action=0" | config_list -i /dev/stdin $list
                                                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/disable_list.sh line 24:
    echo "generic_nonmember_action=1" | config_list -i /dev/stdin $list
                                                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/disable_list.sh line 25:
    echo "ban_list=[]" | config_list -i /dev/stdin $list
                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/disable_list.sh line 43:
            if find /var/lib/mailman/lists -maxdepth 1 | grep -q $1; then
                                                                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/disable_list.sh line 55:
test -z $list && usage
        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/remove_from_private.sh line 29:
user_lists=$(${mm_base}find_member $user | grep -v 'found in')
                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/remove_from_private.sh line 31:
echo -e "found on:\n $user_lists"
                  ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/remove_from_private.sh line 33:
echo -e "analyzing if lists are public or private..\n"
                                                   ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/remove_from_private.sh line 39:
    spolicy=$(${mm_base}config_list -o - $list | grep -E "^subscribe_policy" | cut -d " " -f3)
                                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/remove_from_private.sh line 40:
    apolicy=$(${mm_base}config_list -o - $list | grep -E "archive_private" | cut -d " " -f3)
                                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/remove_from_private.sh line 72:
    if [ $spolicy == "3" ] && [ $apolicy == "1" ]
         ^-- SC2086: Double quote to prevent globbing and word splitting.
                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/remove_from_private.sh line 76:
    elif [ $spolicy == "2" ] && [ $apolicy == "1" ]
           ^-- SC2086: Double quote to prevent globbing and word splitting.
                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/remove_from_private.sh line 80:
    elif [ $spolicy == "1" ] && [ $apolicy == "0" ]
           ^-- SC2086: Double quote to prevent globbing and word splitting.
                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/remove_from_private.sh line 91:
echo -e "\nprivate lists: ${privatelists[@]}\n"
         ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                          ^-- SC2145: Argument mixes string and array. Use * or separate argument.
                                            ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/remove_from_private.sh line 93:
read yesorno
^-- SC2162: read without -r will mangle backslashes.


In modules/mailman/files/scripts/remove_from_private.sh line 110:
echo $user > /tmp/remove-mailman-user
     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/remove_from_private.sh line 112:
for privlist in ${privatelists[@]}
                ^-- SC2068: Double quote array expansions to avoid re-splitting elements.


In modules/mailman/files/scripts/remove_from_private.sh line 116:
    ${mm_base}remove_members -n -f /tmp/remove-mailman-user $privlist
                                                            ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/queue_data.sh line 22:
dochead="<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\">"
                                                                                                                          ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/queue_data.sh line 24:
htmlhead="<head>\n<title>mailman queue data</title>\n</head>\n<body>\n<h2>mailman queue data</h2>\n<table border=\"1\">\n<tr>\n<th>timestamp</th>"
                ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                   ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                            ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                    ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                                                 ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                                                                       ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                                                                             ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/queue_data.sh line 26:
htmlfoot="</table>\n</body>\n</html>\n"
^-- SC2034: htmlfoot appears unused. Verify use (or export if used externally).
                  ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                           ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                    ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/queue_data.sh line 32:
    echo -e "${dochead}\n${htmlhead}"
                       ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/queue_data.sh line 36:
    echo -e "</tr>\n"
                  ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/queue_data.sh line 47:
    numfiles=$(find ${qdir}/${myq} | wc -l)
                            ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/queue_data.sh line 59:
    echo -e "</table></body></html>\n"
                                   ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/queue_data.sh line 65:
echo -e "\nHi ${USER},\n\nThis script creates a HTML table with mailman queue data.
         ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                      ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                        ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/queue_data.sh line 66:
\n\nusage:\n-i (i)nitialize file\n-a (a)ppend data row,\n-f add (f)ooter\n\n
^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
  ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
          ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                       ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                        ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                          ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/queue_data.sh line 67:
On first run use -i to create the HTML header,\nthen put it into a cronjob with -a to append data rows,
                                              ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/queue_data.sh line 68:
\nand when done run -f for a valid HTML footer.\n\nkthxbye. cya\n"
^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                               ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                 ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                               ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 17:
read yesorno
^-- SC2162: read without -r will mangle backslashes.


In modules/mailman/files/scripts/rename_list.sh line 18:
if [ $yesorno != 'y' ]; then
     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/rename_list.sh line 19:
    echo -e "Nothing has been done. Bye.\n"
                                        ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 24:
echo -e "First we are creating the new list '${newlist} like any other list. \nPlease use your email address as list admin when asked. It will be overwritten later.'. \n"
                                                                             ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                                                                                                                       ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 25:
echo -e "${mailman_dir}/bin/newlist ${newlist}\n\n"
                                              ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 26:
${mailman_dir}/bin/newlist ${newlist}
                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/rename_list.sh line 30:
echo -e "Syncing list config and subscribers from '${oldlist}' to '${newlist}'.\n"
                                                                               ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 31:
echo -e "/usr/bin/rsync -avp ${mailman_dir}/lists/${oldlist}/ ${mailman_dir}/lists/${newlist}/\n\n"
                                                                                              ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                                                ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 32:
/usr/bin/rsync -avp ${mailman_dir}/lists/${oldlist}/ ${mailman_dir}/lists/${newlist}/
                                         ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                          ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/rename_list.sh line 36:
echo -e "Changing the list 'real_name' to '${newlist}' after we copied config over.\n"
                                                                                   ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 37:
echo -e "echo \"real_name = '${newlist}'\"  | ${mailman_dir}/bin/config_list -i /dev/stdin ${newlist}\n\n"
                                                                                                     ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                                                       ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 38:
echo "real_name = '${newlist}'"  | ${mailman_dir}/bin/config_list -i /dev/stdin ${newlist}
                                                                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/rename_list.sh line 42:
echo -e "Copying mbox file from '${oldlist}' to '${newlist}'.\n"
                                                             ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 43:
echo -e "cp ${mailman_dir}/archives/private/${oldlist}.mbox/${oldlist}.mbox ${mailman_dir}/archives/private/${newlist}.mbox/${newlist}.mbox\n\n"
                                                                                                                                           ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                                                                                             ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 44:
cp ${mailman_dir}/archives/private/${oldlist}.mbox/${oldlist}.mbox ${mailman_dir}/archives/private/${newlist}.mbox/${newlist}.mbox
                                   ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/rename_list.sh line 48:
echo -e "Recreating HTML archives from mbox file for '${newlist}'.\n"
                                                                  ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 49:
echo -e "${mailman_dir}/bin/arch ${newlist}\n\n"
                                           ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                             ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 50:
${mailman_dir}/bin/arch ${newlist}
                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/rename_list.sh line 54:
echo -e "Making sure mbox file is owned by list:list.\n"
                                                     ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 55:
echo -e "chown list:list ${mailman_dir}/archives/private/${newlist}.mbox/${newlist}.mbox\n\n"
                                                                                        ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                                          ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 56:
chown list:list ${mailman_dir}/archives/private/${newlist}.mbox/${newlist}.mbox
                                                ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/rename_list.sh line 60:
echo -e "Adding '${oldlist}@lists.wikimedia.org' to acceptable aliases on '${newlist}'.\n"
                                                                                       ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 61:
echo -e "echo \"acceptable_aliases = '${oldlist}@lists.wikimedia.org'\"  | ${mailman_dir}/bin/config_list -i /dev/stdin ${newlist}\n\n"
                                                                                                                                  ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                                                                                    ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 62:
echo "acceptable_aliases = '${oldlist}@lists.wikimedia.org'"  | ${mailman_dir}/bin/config_list -i /dev/stdin ${newlist}
                                                                                                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mailman/files/scripts/rename_list.sh line 66:
echo -e "\nPlease add the following code to './modules/profile/files/exim/listserver_aliases':\n--------\n"
         ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                                              ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                                                        ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 67:
echo -e "${oldlist}: ${newlist} \n--------\n"
                                ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                          ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 70:
echo -e "Please add the following code to './modules/mailman/templates/lists.wikimedia.org.erb':\n--------\n"
                                                                                                ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                                                          ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 72:
an/listinfo/${newlist}\n--------\n\n"
                      ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                  ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 75:
echo -e "To finish this please upload the code changes above to Gerrit and merge.\n\nTest by sending a mail to both ${oldlist}@lists.wikimedia.org and ${newlist}@lists.wikimedia.org.\n\nCheck the listinfo pages at https://lists.wikimedia.org/mailman/listinfo/${oldlist} and https://lists.wikimedia.org/mailman/listinfo/${newlist}\n"
                                                                                 ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                                   ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                                                                                                                                      ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                                                                                                                                        ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                                                                                                                                                                                                                                                                                         ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/mailman/files/scripts/rename_list.sh line 78:
echo -e "Don't forget to update the ticket and that should be all. Bye.\n"
                                                                       ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/tlsproxy/files/utils/cipher_cap.sh line 31:
/usr/sbin/tcpdump -Z $PUSER -npi eth0 --direction=in -s 0 -W 1 -G $SECS -w - "$BPF" 2>/dev/null \
                                                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/fetches/kiwix-rsync-cron.sh line 14:
    running=`/usr/bin/pgrep -f -x "/usr/bin/rsync -rlptq $bwlimit ${sourcehost}::${srcpath} ${destroot}/${destpath}"`
            ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/dumps/files/generation/get_dump_stats.sh line 13:
    user=$2
    ^-- SC2034: user appears unused. Verify use (or export if used externally).


In modules/dumps/files/generation/get_dump_stats.sh line 14:
    password=$3
    ^-- SC2034: password appears unused. Verify use (or export if used externally).


In modules/dumps/files/generation/get_dump_stats.sh line 16:
    date=$( cd $wiki 2>/dev/null; ls -d 2*01 2>/dev/null | tail -1 )
            ^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
               ^-- SC2086: Double quote to prevent globbing and word splitting.
                                  ^-- SC2012: Use find instead of ls to better handle non-alphanumeric filenames.


In modules/dumps/files/generation/get_dump_stats.sh line 26:
    cd "${dumpsbasedir}/${wiki}/${date}"
    ^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.


In modules/dumps/files/generation/get_dump_stats.sh line 37:
    pmhcount=$( ls ${wiki}-${date}-pages-meta-history*.xml*bz2 2>/dev/null | wc -l )
                ^-- SC2012: Use find instead of ls to better handle non-alphanumeric filenames.
                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/get_dump_stats.sh line 38:
    if [ $pmhcount -gt 0 ]; then
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/get_dump_stats.sh line 39:
	fullhistory=$( bzcat ${wiki}-${date}-pages-meta-history*.xml*bz2 | wc -c )
                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/get_dump_stats.sh line 43:
    cd "${dumpsbasedir}"
    ^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.


In modules/dumps/files/generation/get_dump_stats.sh line 80:
verbose=""
^-- SC2034: verbose appears unused. Verify use (or export if used externally).


In modules/dumps/files/generation/get_dump_stats.sh line 84:
    if [ $1 == "--dumpsbasedir" ]; then
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/get_dump_stats.sh line 87:
    elif [ $1 == "--sender_address" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/get_dump_stats.sh line 104:
cd "$dumpsbasedir"
^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.


In modules/dumps/files/generation/get_dump_stats.sh line 107:
allsubdirs_array=( $allsubdirs )
                   ^-- SC2206: Quote to prevent word splitting, or split robustly with mapfile or read -a.


In modules/dumps/files/generation/get_dump_stats.sh line 109:
emptysubdirs_array=( $emptysubdirs )
                     ^-- SC2206: Quote to prevent word splitting, or split robustly with mapfile or read -a.


In modules/dumps/files/generation/get_dump_stats.sh line 116:
		unset allsubdirs_array[$i]
                      ^-- SC2184: Quote arguments to unset so they're not glob expanded.


In modules/dumps/files/generation/get_dump_stats.sh line 128:
wikirandom_index=$(( $RANDOM % $totaldumped ))
                     ^-- SC2004: $/${} is unnecessary on arithmetic variables.
                               ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In modules/dumps/files/generation/get_dump_stats.sh line 137:
    get_wiki_stats $wiki
                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 84:
    latestwiki=$( cd "$xmldumpsdir"; ls -td *wik* | head -1 )
                  ^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
                                     ^-- SC2012: Use find instead of ls to better handle non-alphanumeric filenames.
                                            ^-- SC2035: Use ./*glob* or -- *glob* so names with dashes won't become options.


In modules/dumps/files/generation/rsync-to-peers.sh line 87:
    latestrun=$( cd "${xmldumpsdir}/${latestwiki}" ; ls -d [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] | sort | tail -1 )
                 ^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
                                                     ^-- SC2012: Use find instead of ls to better handle non-alphanumeric filenames.


In modules/dumps/files/generation/rsync-to-peers.sh line 91:
        ( cd "$xmldumpsdir"; /bin/tar cfp "$tarballpath" *html *json )
          ^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
                                                         ^-- SC2035: Use ./*glob* or -- *glob* so names with dashes won't become options.
                                                               ^-- SC2035: Use ./*glob* or -- *glob* so names with dashes won't become options.


In modules/dumps/files/generation/rsync-to-peers.sh line 93:
        ( cd "$xmldumpsdir"; /usr/bin/find "." -maxdepth 3 -regextype sed -regex ".*/${latestrun}/.*\.\(json\|html\|txt\)" | /usr/bin/xargs -s 1048576 /bin/tar rfp "$tarballpath" )
          ^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
                                                                                                    ^-- SC1117: Backslash is literal in "\.". Prefer explicit escaping: "\\.".
                                                                                                      ^-- SC1117: Backslash is literal in "\(". Prefer explicit escaping: "\\(".
                                                                                                            ^-- SC1117: Backslash is literal in "\|". Prefer explicit escaping: "\\|".
                                                                                                                  ^-- SC1117: Backslash is literal in "\|". Prefer explicit escaping: "\\|".
                                                                                                                       ^-- SC1117: Backslash is literal in "\)". Prefer explicit escaping: "\\)".


In modules/dumps/files/generation/rsync-to-peers.sh line 95:
	( cd "$xmldumpsdir"; /usr/bin/find "." -maxdepth 3 -regextype sed -regex ".*/latest/.*\.txt" | /usr/bin/xargs -s 1048576 /bin/tar rfp "$tarballpath" )
          ^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
                                                                                              ^-- SC1117: Backslash is literal in "\.". Prefer explicit escaping: "\\.".


In modules/dumps/files/generation/rsync-to-peers.sh line 121:
    if [ $1 == "--xmldumpsdir" ]; then
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 124:
    elif [ $1 == "--xmlremotedirs" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 127:
    elif [ $1 == "--miscdumpsdir" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 130:
    elif [ $1 == "--miscremotedirs" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 133:
    elif [ $1 == "--miscsubdirs" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 136:
    elif [ $1 == "--miscremotesubs" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 139:
    elif [ $1 == "--do_tarball" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 142:
    elif [ $1 == "--do_rsync_xml" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 145:
    elif [ $1 == "--do_rsync_misc" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 148:
    elif [ $1 == "--do_rsync_miscsubs" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 151:
    elif [ $1 == "--dryrun" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 196:
    read -a xmlremotedirs_list <<<$xmlremotedirs
    ^-- SC2162: read without -r will mangle backslashes.
                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 202:
    read -a miscremotedirs_list <<<$miscremotedirs
    ^-- SC2162: read without -r will mangle backslashes.
                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 208:
    read -a miscremotesubs_list <<<$miscremotesubs
    ^-- SC2162: read without -r will mangle backslashes.
                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 209:
    read -a miscsubdirs_list <<<$miscsubdirs
    ^-- SC2162: read without -r will mangle backslashes.
                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 214:
while [ 1 ]; do
        ^-- SC2161: Instead of '[ 1 ]', use 'true'.


In modules/dumps/files/generation/rsync-to-peers.sh line 219:
        for dest in ${xmlremotedirs_list[@]}; do
                    ^-- SC2068: Double quote array expansions to avoid re-splitting elements.


In modules/dumps/files/generation/rsync-to-peers.sh line 228:
                echo /usr/bin/rsync -a  --contimeout=600 --timeout=600 --bwlimit=$BWLIMIT --exclude='**bad/' --exclude='**save/' --exclude='**not/' --exclude='**temp/' --exclude='**tmp/' --exclude='*.inprog'  --exclude='*.html' --exclude='*.txt' --exclude='*.json' ${xmldumpsdir}/*wik* "$dest"
                                                                                                                                                                                                                                                                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 230:
                /usr/bin/rsync -a  --contimeout=600 --timeout=600 --bwlimit=$BWLIMIT --exclude='**bad/' --exclude='**save/' --exclude='**not/' --exclude='**temp/' --exclude='**tmp/' --exclude='*.inprog'  --exclude='*.html' --exclude='*.txt' --exclude='*.json' ${xmldumpsdir}/*wik* "$dest"  > /dev/null 2>&1
                                                                                                                                                                                                                                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 250:
       for dest in ${miscremotedirs_list[@]}; do
                   ^-- SC2068: Double quote array expansions to avoid re-splitting elements.


In modules/dumps/files/generation/rsync-to-peers.sh line 252:
               echo /usr/bin/rsync -a  --contimeout=600 --timeout=600 --bwlimit=$BWLIMIT ${miscdumpsdir}/* "$dest"
                                                                                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 254:
               /usr/bin/rsync -a  --contimeout=600 --timeout=600 --bwlimit=$BWLIMIT ${miscdumpsdir}/* "$dest" > /dev/null 2>&1
                                                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 264:
	   for dest in ${miscremotesubs_list[@]}; do
                       ^-- SC2068: Double quote array expansions to avoid re-splitting elements.


In modules/dumps/files/generation/rsync-to-peers.sh line 266:
                   echo /usr/bin/rsync -a  --contimeout=600 --timeout=600 --bwlimit=$BWLIMIT ${miscdumpsdir}/${subdir} "$dest"
                                                                                             ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/rsync-to-peers.sh line 268:
                   /usr/bin/rsync -a  --contimeout=600 --timeout=600 --bwlimit=$BWLIMIT ${miscdumpsdir}/${subdir} "$dest" > /dev/null 2>&1
                                                                                        ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/job_watcher.sh line 26:
    if [ $1 == "--locksbasedir" ]; then
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/job_watcher.sh line 29:
    elif [ $1 == "--dumpsbasedir" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/job_watcher.sh line 32:
    elif [ $1 == "--verbose" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/job_watcher.sh line 56:
wikis=$( ls -d *wik* )
               ^-- SC2035: Use ./*glob* or -- *glob* so names with dashes won't become options.


In modules/dumps/files/generation/job_watcher.sh line 60:
    ls $wikiname/lock* > /dev/null 2>&1 || continue
       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/job_watcher.sh line 64:
    thisfile=$( ls -t ${wikiname}/lock* 2>/dev/null | head -1 )
                ^-- SC2012: Use find instead of ls to better handle non-alphanumeric filenames.
                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/job_watcher.sh line 75:
for index in ${!locked_wikis[@]}; do
             ^-- SC2068: Double quote array expansions to avoid re-splitting elements.


In modules/dumps/files/generation/job_watcher.sh line 77:
    lock_ts=$( /usr/bin/stat -c %Y ${lock_files[$index]} 2>/dev/null )
                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/job_watcher.sh line 83:
    locked_date=$( echo ${lock_files[$index]} | /usr/bin/mawk -F_ '{ print $NF }' )
                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/job_watcher.sh line 84:
    inprog=$( ls ${wikiname}/${locked_date}/*inprog 2>/dev/null )
                 ^-- SC2086: Double quote to prevent globbing and word splitting.
                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/generation/job_watcher.sh line 92:
            DIFF=$(( $lock_ts - $filename_ts ))
                     ^-- SC2004: $/${} is unnecessary on arithmetic variables.
                                ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In modules/dumps/files/generation/job_watcher.sh line 96:
        if [ $(( ${filename_ts} + ${AGE_DIFFERENCE} )) -lt ${lock_ts} ]; then
                 ^-- SC2004: $/${} is unnecessary on arithmetic variables.
                                  ^-- SC2004: $/${} is unnecessary on arithmetic variables.
                                                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/web/list-last-good-dumps.sh line 26:
    if [ $1 == "--xmldumpsdir" ]; then
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/web/cleanups/cleanup_old_miscdumps.sh line 34:
    if [ $1 == "--miscdumpsdir" ]; then
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/web/cleanups/cleanup_old_miscdumps.sh line 37:
    elif [ $1 == "--configfile" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/web/cleanups/cleanup_old_miscdumps.sh line 40:
    elif [ $1 == "--dryrun" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/web/cleanups/cleanup_old_miscdumps.sh line 63:
config_entries=$( cat $configfile | grep ':' | grep -v '^#' )
                      ^-- SC2086: Double quote to prevent globbing and word splitting.
                      ^-- SC2002: Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead.


In modules/dumps/files/web/cleanups/cleanup_old_miscdumps.sh line 68:
  IFS=':' read -r subdir keep <<<$entry
                                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/web/cleanups/cleanup_old_miscdumps.sh line 78:
  runs=$( cd "$subdir"; ls -d [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] 2>/dev/null | sort )
          ^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
                        ^-- SC2012: Use find instead of ls to better handle non-alphanumeric filenames.


In modules/dumps/files/web/cleanups/cleanup_old_miscdumps.sh line 83:
  runs=( $runs )
         ^-- SC2206: Quote to prevent word splitting, or split robustly with mapfile or read -a.


In modules/dumps/files/web/cleanups/cleanup_old_miscdumps.sh line 85:
  if [ $numruns -le $keep ]; then
       ^-- SC2086: Double quote to prevent globbing and word splitting.
                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/web/cleanups/cleanup_old_miscdumps.sh line 89:
  num_unwanted=$(( $numruns - $keep ))
                   ^-- SC2004: $/${} is unnecessary on arithmetic variables.
                              ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In modules/dumps/files/web/cleanups/cleanup_old_miscdumps.sh line 90:
  unwanted=${runs[@]:0:${num_unwanted}}
           ^-- SC2124: Assigning an array to a string! Assign as array, or use * instead of @ to concatenate.


In modules/dumps/files/web/cleanups/cleanup_old_miscdumps.sh line 91:
  for dirname in ${unwanted[@]}; do
                 ^-- SC2068: Double quote array expansions to avoid re-splitting elements.


In modules/dumps/files/web/cleanups/cleanup_old_miscdumps.sh line 95:
	  rm -rf "${subdir}/${dirname}"
                 ^-- SC2115: Use "${var:?}" to ensure this never expands to / .


In modules/dumps/files/web/unpack-dumpstatusfiles.sh line 33:
    if [ $1 == "--xmldumpsdir" ]; then
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/web/unpack-dumpstatusfiles.sh line 36:
    elif [ $1 == "--newer" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dumps/files/web/unpack-dumpstatusfiles.sh line 62:
        cd "$xmldumpsdir"
        ^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.


In modules/query_service/files/cron/cronUtils.sh line 6:
if [ -r /etc/$deploy_name/vars.sh ]; then
             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/cronUtils.sh line 7:
  . /etc/$deploy_name/vars.sh
  ^-- SC1090: Can't follow non-constant source. Use a directive to specify location.
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/cronUtils.sh line 10:
if [ -r /etc/$deploy_name/gui_vars.sh ]; then
             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/cronUtils.sh line 11:
  . /etc/$deploy_name/gui_vars.sh
  ^-- SC1090: Can't follow non-constant source. Use a directive to specify location.
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/cronUtils.sh line 14:
if [ -z "${DATA_DIR}" -o -z "${LOG_DIR}" -o -z "${DEPLOY_DIR}" ]; then
                      ^-- SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined.
                                         ^-- SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined.


In modules/query_service/files/cron/cronUtils.sh line 20:
DUMPS_DIR="${DATA_DIR}/dumps"
^-- SC2034: DUMPS_DIR appears unused. Verify use (or export if used externally).


In modules/query_service/files/cron/cronUtils.sh line 21:
today=$(date -u +'%Y%m%d')
^-- SC2034: today appears unused. Verify use (or export if used externally).


In modules/query_service/files/cron/cronUtils.sh line 29:
	curl -s -f -XGET $URL -o ${DATA_DIR}/${fileName}
                         ^-- SC2086: Double quote to prevent globbing and word splitting.
                                 ^-- SC2086: Double quote to prevent globbing and word splitting.
                                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/cronUtils.sh line 30:
	if [ ! -s ${DATA_DIR}/${fileName} ]; then
                  ^-- SC2086: Double quote to prevent globbing and word splitting.
                              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/cronUtils.sh line 34:
	curl -s -XPOST --data-binary update="LOAD <file://$DATA_DIR/$FILENAME>" $sparqlEndpoint
                                                                    ^-- SC2153: Possible misspelling: FILENAME may not be assigned, but fileName is.
                                                                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/cronUtils.sh line 43:
	local oldNamespace=$(cat $ALIAS_FILE | grep $mainName | cut -d' ' -f2 | cut -d ';' -f1)
              ^-- SC2155: Declare and assign separately to avoid masking return values.
                                 ^-- SC2086: Double quote to prevent globbing and word splitting.
                                 ^-- SC2002: Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead.
                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/cronUtils.sh line 44:
	if [ "${oldNamespace}" = ${currentAlias} ]; then
                                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/cronUtils.sh line 49:
		sed -i "/${mainName}/c ${mainName} ${currentAlias};" $ALIAS_FILE
                                                                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/cronUtils.sh line 51:
		echo "${mainName} ${currentAlias};" >> $ALIAS_FILE
                                                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/autodeploy.sh line 7:
echo "`date -u` - Query Service Starting autodeployment"
      ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/query_service/files/cron/autodeploy.sh line 10:
git -C $package_dir fetch
       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/autodeploy.sh line 11:
git -C $package_dir reset --hard HEAD
       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/autodeploy.sh line 12:
git -C $package_dir checkout origin/master
       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/autodeploy.sh line 13:
git -C $package_dir submodule update
       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/autodeploy.sh line 14:
git -C $package_dir fat pull
       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/autodeploy.sh line 17:
sudo service $deploy_name-blazegraph restart
             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/autodeploy.sh line 19:
sudo service ${deploy_name}-categories restart
             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/autodeploy.sh line 24:
sudo service ${deploy_name}-updater restart
             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/autodeploy.sh line 26:
echo "`date -u` - Query Service autodeployment - done"
      ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/query_service/files/cron/loadCategoriesDaily.sh line 3:
. /usr/local/bin/cronUtils.sh $1
^-- SC1091: Not following: /usr/local/bin/cronUtils.sh was not specified as input (see shellcheck -x).
                              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/loadCategoriesDaily.sh line 8:
rm -f ${DATA_DIR}/*-daily.sparql.gz
      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/loadCategoriesDaily.sh line 9:
rm -f ${DATA_DIR}/dumps/*-daily.sparql.gz
      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/loadCategoriesDaily.sh line 11:
cd ${DEPLOY_DIR}
^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/reloadCategories.sh line 6:
. /usr/local/bin/cronUtils.sh $1
^-- SC1091: Not following: /usr/local/bin/cronUtils.sh was not specified as input (see shellcheck -x).
                              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/reloadCategories.sh line 11:
newNamespace="categories${today}"
                        ^-- SC2154: today is referenced but not assigned.


In modules/query_service/files/cron/reloadCategories.sh line 13:
rm -f ${DATA_DIR}/*-categories.ttl.gz
      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/reloadCategories.sh line 14:
rm -f ${DATA_DIR}/dumps/*-categories.ttl.gz
      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/reloadCategories.sh line 15:
cd ${DEPLOY_DIR}
   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/reloadCategories.sh line 17:
bash createNamespace.sh ${newNamespace} $ENDPOINT || exit 1
                        ^-- SC2086: Double quote to prevent globbing and word splitting.
                                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/reloadCategories.sh line 20:
bash forAllCategoryWikis.sh loadCategoryDump.sh $newNamespace
                                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/reloadCategories.sh line 21:
replaceNamespace categories ${newNamespace} ${CATEGORY_ENDPOINT}
                            ^-- SC2086: Double quote to prevent globbing and word splitting.
                                            ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/reloadDCAT-AP.sh line 5:
. /usr/local/bin/cronUtils.sh $1
^-- SC1091: Not following: /usr/local/bin/cronUtils.sh was not specified as input (see shellcheck -x).
                              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/reloadDCAT-AP.sh line 9:
newNamespace="dcatap${today}"
                    ^-- SC2154: today is referenced but not assigned.


In modules/query_service/files/cron/reloadDCAT-AP.sh line 11:
rm -f ${DATA_DIR}/dcatap-*.rdf
      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/reloadDCAT-AP.sh line 12:
cd $DEPLOY_DIR
^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/reloadDCAT-AP.sh line 14:
bash createNamespace.sh $newNamespace || exit 1
                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/reloadDCAT-AP.sh line 17:
loadFileIntoBlazegraph $DCAT_SOURCE $FILENAME "http://localhost:9990/${NAMESPACE_URL}${newNamespace}/sparql"
                       ^-- SC2086: Double quote to prevent globbing and word splitting.
                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/query_service/files/cron/reloadDCAT-AP.sh line 18:
replaceNamespace dcatap $newNamespace http://localhost:9990
                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/dynamicproxy/files/proxydb-bak.sh line 5:
nice -n 19 sqlite3 /etc/dynamicproxy-api/data.db .dump | nice -n 19 gzip -9 > /data/project/backup/proxy-${HOSTNAME}-${DATE}.bak.gz
                                                                                                         ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/base/files/puppet/puppet-common.sh line 14:
PUPPET_DISABLEDLOCK="$(get_puppet_config agent_disabled_lockfile)"
^-- SC2034: PUPPET_DISABLEDLOCK appears unused. Verify use (or export if used externally).


In modules/base/files/puppet/puppet-common.sh line 27:
    local puppetpid=$(cat "$PUPPETLOCK")
          ^-- SC2155: Declare and assign separately to avoid masking return values.


In modules/base/files/monitoring/check_established_connections.sh line 11:
/bin/ss --tcp state established dst $host dport = :$dport | awk "
                                    ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/base/files/monitoring/check_established_connections.sh line 17:
        printf \"OK: %d %s\n\", count, msg
                          ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/base/files/monitoring/check_established_connections.sh line 21:
    printf \"CRITICAL: %d %s\n\", count, msg
                            ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/base/files/environment/mysql-ps1.sh line 1:
#####################################################################
^-- SC2148: Tips depend on target shell and yours is unknown. Add a shebang.


In modules/base/files/environment/field.sh line 1:
if [ -n "$BASH_VERSION" -a -n "$PS1" ]; then
^-- SC2148: Tips depend on target shell and yours is unknown. Add a shebang.
                        ^-- SC2166: Prefer [ p ] && [ q ] as [ p -a q ] is not well defined.


In modules/dnsrecursor/files/labsalias-dump.sh line 5:
if ! `/usr/local/bin/labs-ip-alias-dump.py --check-changes-only`; then
     ^-- SC2092: Remove backticks to avoid executing output.
     ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/confd/files/check_confd_lint.sh line 15:
if [ $? -eq 0 ]; then
     ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.


In modules/confd/files/check_confd_lint.sh line 17:
    mtime=$(/usr/bin/stat -c "%n last %y" $target)
                                          ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-get-cert.sh line 13:
    echo -e "      $0 -h/--help   \t- show help and exit"
                                  ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".


In modules/kubeadm/files/admin_scripts/wmcs-k8s-get-cert.sh line 14:
    echo -e "      $0 <svcname>   \t- generate a x509 TLS cert from the kubernetes API"
                                  ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".


In modules/kubeadm/files/admin_scripts/wmcs-k8s-get-cert.sh line 15:
    echo -e "      $0 <svcname> -v\t- same, but in verbose mode"
                                  ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".


In modules/kubeadm/files/admin_scripts/wmcs-k8s-get-cert.sh line 54:
cat <<EOF >> ${tmpdir}/csr.conf
             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-get-cert.sh line 70:
openssl genrsa -out ${tmpdir}/server-key.pem 2048
                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-get-cert.sh line 71:
openssl req -new -key ${tmpdir}/server-key.pem -subj "/CN=${title}" -out ${tmpdir}/server.csr -config ${tmpdir}/csr.conf
                      ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                         ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-get-cert.sh line 74:
kubectl delete csr ${csrName} || true
                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-get-cert.sh line 85:
  request: $(cat ${tmpdir}/server.csr | base64 | tr -d '\n')
                 ^-- SC2086: Double quote to prevent globbing and word splitting.
                 ^-- SC2002: Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-get-cert.sh line 95:
    kubectl get csr ${csrName}
                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-get-cert.sh line 96:
    if [ "$?" -eq 0 ]; then
         ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-get-cert.sh line 102:
kubectl certificate approve ${csrName}
                            ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-get-cert.sh line 104:
for x in $(seq 10); do
^-- SC2034: x appears unused. Verify use (or export if used externally).


In modules/kubeadm/files/admin_scripts/wmcs-k8s-get-cert.sh line 105:
    serverCert=$(kubectl get csr ${csrName} -o jsonpath='{.status.certificate}')
                                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-get-cert.sh line 115:
echo ${serverCert} | openssl base64 -d -A -out ${tmpdir}/server-cert.pem
     ^-- SC2086: Double quote to prevent globbing and word splitting.
                                               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-secret-for-cert.sh line 67:
WMCS_K8S_GET_CERT=$(which wmcs-k8s-get-cert)
                    ^-- SC2230: which is non-standard. Use builtin 'command -v' instead.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-secret-for-cert.sh line 73:
KUBECTL=$(which kubectl)
          ^-- SC2230: which is non-standard. Use builtin 'command -v' instead.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-secret-for-cert.sh line 81:
GET_CERT_OUTPUT="$(eval ${cmd})"
                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-secret-for-cert.sh line 84:
if [ "$(wc -l <<< ${GET_CERT_OUTPUT})" != 2 ] ; then
                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-secret-for-cert.sh line 89:
TEMP_CRT_FILE="$(head -1 <<< ${GET_CERT_OUTPUT})"
                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-secret-for-cert.sh line 90:
TEMP_KEY_FILE="$(tail -1 <<< ${GET_CERT_OUTPUT})"
                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-secret-for-cert.sh line 92:
if [ "$(grep -c server-cert.pem$ <<< $TEMP_CRT_FILE)" != "1" ] ; then
                                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-secret-for-cert.sh line 97:
if [ "$(grep -c server-key.pem$ <<< $TEMP_KEY_FILE)" != "1" ] ; then
                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-secret-for-cert.sh line 118:
[ "$verbose" == "v" ] && echo -e "\nINFO: executing '${cmd}'"
                                  ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/kubeadm/files/admin_scripts/wmcs-k8s-secret-for-cert.sh line 119:
CREATE_SECRET_OUTPUT="$(eval ${cmd})"
                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-secret-for-cert.sh line 124:
[ "$verbose" == "v" ] && echo -e "\nINFO: executing '${cmd}'"
                                  ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/kubeadm/files/admin_scripts/wmcs-k8s-secret-for-cert.sh line 127:
rm -f $TEMP_CRT_FILE
      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-secret-for-cert.sh line 128:
rm -f $TEMP_KEY_FILE
      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-enable-cluster-monitor.sh line 7:
        echo -e "Usage (must be cluster-admin or similar):\n"
                                                          ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/kubeadm/files/admin_scripts/wmcs-k8s-enable-cluster-monitor.sh line 16:
ARGL=$(echo $1 | wc -c)
       ^-- SC2000: See if you can use ${#variable} instead.
            ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-enable-cluster-monitor.sh line 17:
if [ $ARGL -gt 58 ]; then
     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-enable-cluster-monitor.sh line 26:
if ! kubectl get ns $namespace; then
                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kubeadm/files/admin_scripts/wmcs-k8s-enable-cluster-monitor.sh line 83:
kubectl get serviceaccounts ${tool}-obs -n $namespace
                            ^-- SC2086: Double quote to prevent globbing and word splitting.
                                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/raid/files/get-raid-status-hpssacli.sh line 46:
    OUTPUT="${OUTPUT}$(/usr/bin/sudo /usr/sbin/hpssacli controller slot="${CONTROLLER}" ld all show detail | grep -Ev "${EXCLUDE_PATTERN}"; exit "${PIPESTATUS[0]}")\n"
                                                                                                                                                                    ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/raid/files/get-raid-status-hpssacli.sh line 58:
print(zlib.compress(sys.stdin.read()).replace('\x00', '###NULL###'))"
                                               ^-- SC1117: Backslash is literal in "\x". Prefer explicit escaping: "\\x".


In modules/raid/files/get-raid-status-ssacli.sh line 46:
    OUTPUT="${OUTPUT}$(/usr/bin/sudo /usr/sbin/ssacli controller slot="${CONTROLLER}" ld all show detail | grep -Ev "${EXCLUDE_PATTERN}"; exit "${PIPESTATUS[0]}")\n"
                                                                                                                                                                  ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/raid/files/get-raid-status-ssacli.sh line 58:
print(zlib.compress(sys.stdin.read()).replace('\x00', '###NULL###'))"
                                               ^-- SC1117: Backslash is literal in "\x". Prefer explicit escaping: "\\x".


In modules/druid/files/druid-hdfs-storage-cdh-link.sh line 9:
hadoop=${3:-/usr/lib/hadoop/client}
^-- SC2034: hadoop appears unused. Verify use (or export if used externally).


In modules/druid/files/druid-hdfs-storage-cdh-link.sh line 12:
mkdir -p $dest
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/druid/files/druid-hdfs-storage-cdh-link.sh line 16:
for storage_jar in $source/*.jar; do
                   ^-- SC2231: Quote expansions in this for loop glob to prevent wordsplitting, e.g. "$dir"/*.txt .


In modules/druid/files/druid-hdfs-storage-cdh-link.sh line 18:
    base_jar=$(basename $(echo "${storage_jar}" | sed 's@-[0-9\.-]*\.jar$@.jar@'))
                        ^-- SC2046: Quote this to prevent word splitting.
                          ^-- SC2001: See if you can use ${variable//search/replace} instead.


In modules/druid/files/druid-hdfs-storage-cdh-link.sh line 22:
        ln -sfv $storage_jar ${dest}/${base_jar}
                ^-- SC2086: Double quote to prevent globbing and word splitting.
                             ^-- SC2086: Double quote to prevent globbing and word splitting.
                                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/druid/files/druid-hdfs-storage-cdh-link.sh line 26:
        ln -sfv $storage_jar ${dest}/${base_jar}
                ^-- SC2086: Double quote to prevent globbing and word splitting.
                             ^-- SC2086: Double quote to prevent globbing and word splitting.
                                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/druid/files/druid-hdfs-storage-cdh-link.sh line 30:
        test -f /usr/lib/hadoop/client/$base_jar && ln -sfv /usr/lib/hadoop/client/$base_jar $dest/
                                       ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/druid/files/druid-hdfs-storage-cdh-link.sh line 36:
ln -sfv /usr/lib/hadoop/client/htrace-core4.jar $dest/
                                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/docker_registry_ha/files/registry_ha_swift_container_replication.sh line 5:
    echo -ne "Usage: $0 [-x|-t] -a /path/to/account.file \n\
                                                         ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/docker_registry_ha/files/registry_ha_swift_container_replication.sh line 6:
                 -r swift_replication_configuration (//REPLICATION_CLUSTER/cluster/AUTH/swift_container) \n\
                                                                                                         ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/docker_registry_ha/files/registry_ha_swift_container_replication.sh line 7:
                 -k swift_replication_key \n\
                                          ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/docker_registry_ha/files/registry_ha_swift_container_replication.sh line 18:
    source "${account_file}" && swift post \
    ^-- SC1090: Can't follow non-constant source. Use a directive to specify location.


In modules/docker_registry_ha/files/registry_ha_swift_container_replication.sh line 29:
    source "${account_file}" && swift stat "${swift_container}"
    ^-- SC1090: Can't follow non-constant source. Use a directive to specify location.


In modules/confluent/files/kafka/kafka.sh line 7:
commands=$(ls /usr/bin/kafka-* | xargs -n 1 basename | sed 's@kafka-@  @g')
           ^-- SC2011: Use 'find .. -print0 | xargs -0 ..' or 'find .. -exec .. +' to allow non-alphanumeric filenames.


In modules/confluent/files/kafka/kafka.sh line 36:
if [ -z "${1}" -o "${1:0:1}" == '-' ]; then
               ^-- SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined.


In modules/confluent/files/kafka/kafka.sh line 48:
    : ${JAVA_HOME="$KAFKA_JAVA_HOME"}
      ^-- SC2223: This default assignment may cause DoS due to globbing. Quote it.


In modules/confluent/files/kafka/kafka.sh line 55:
if [ -n "${KAFKA_ZOOKEEPER_URL}" -a -z "$(echo $@ | grep -- --zookeeper)" ]; then
                                 ^-- SC2166: Prefer [ p ] && [ q ] as [ p -a q ] is not well defined.
                                    ^-- SC2143: Use ! grep -q instead of comparing output with [ -z .. ].
                                               ^-- SC2068: Double quote array expansions to avoid re-splitting elements.


In modules/confluent/files/kafka/kafka.sh line 62:
if [ -n "${KAFKA_BOOTSTRAP_SERVERS}" -a -z "$(echo $@ | grep -- --broker-list)" ]; then
                                     ^-- SC2166: Prefer [ p ] && [ q ] as [ p -a q ] is not well defined.
                                        ^-- SC2143: Use ! grep -q instead of comparing output with [ -z .. ].
                                                   ^-- SC2068: Double quote array expansions to avoid re-splitting elements.


In modules/confluent/files/kafka/kafka.sh line 69:
if [ -n "${KAFKA_BOOTSTRAP_SERVERS}" -a -z "$(echo $@ | grep -- --bootstrap-server)" ]; then
                                     ^-- SC2166: Prefer [ p ] && [ q ] as [ p -a q ] is not well defined.
                                        ^-- SC2143: Use ! grep -q instead of comparing output with [ -z .. ].
                                                   ^-- SC2068: Double quote array expansions to avoid re-splitting elements.


In modules/confluent/files/kafka/kafka.sh line 76:
if [ -n "${KAFKA_ZOOKEEPER_URL}" -a -z "$(echo $@ | egrep -- '--authorizer-properties\ *zookeeper\.connect')" ]; then
                                 ^-- SC2166: Prefer [ p ] && [ q ] as [ p -a q ] is not well defined.
                                    ^-- SC2143: Use ! egrep -q instead of comparing output with [ -z .. ].
                                               ^-- SC2068: Double quote array expansions to avoid re-splitting elements.
                                                    ^-- SC2196: egrep is non-standard and deprecated. Use grep -E instead.


In modules/confluent/files/kafka/kafka.sh line 87:
broker_list_commands="kafka-console-producer "\
                                              ^-- SC2140: Word is of the form "A"B"C" (B indicated). Did you mean "ABC" or "A\"B\"C"?


In modules/confluent/files/kafka/kafka.sh line 88:
"kafka-consumer-perf-test "\
                           ^-- SC2140: Word is of the form "A"B"C" (B indicated). Did you mean "ABC" or "A\"B\"C"?


In modules/confluent/files/kafka/kafka.sh line 89:
"kafka-replay-log-producer "\
                            ^-- SC2140: Word is of the form "A"B"C" (B indicated). Did you mean "ABC" or "A\"B\"C"?


In modules/confluent/files/kafka/kafka.sh line 90:
"kafka-replica-verification "\
                             ^-- SC2140: Word is of the form "A"B"C" (B indicated). Did you mean "ABC" or "A\"B\"C"?


In modules/confluent/files/kafka/kafka.sh line 91:
"kafka-simple-consumer-shell "\
                              ^-- SC2140: Word is of the form "A"B"C" (B indicated). Did you mean "ABC" or "A\"B\"C"?


In modules/confluent/files/kafka/kafka.sh line 92:
"kafka-verifiable-consumer "\
                            ^-- SC2140: Word is of the form "A"B"C" (B indicated). Did you mean "ABC" or "A\"B\"C"?


In modules/confluent/files/kafka/kafka.sh line 95:
bootstrap_server_commands="kafka-console-consumer "\
                                                   ^-- SC2140: Word is of the form "A"B"C" (B indicated). Did you mean "ABC" or "A\"B\"C"?


In modules/confluent/files/kafka/kafka.sh line 96:
"kafka-broker-api-versions "\
                            ^-- SC2140: Word is of the form "A"B"C" (B indicated). Did you mean "ABC" or "A\"B\"C"?


In modules/confluent/files/kafka/kafka.sh line 99:
zookeeper_commands="kafka-configs "\
                                   ^-- SC2140: Word is of the form "A"B"C" (B indicated). Did you mean "ABC" or "A\"B\"C"?


In modules/confluent/files/kafka/kafka.sh line 100:
"kafka-consumer-offset-checker.sh "\
                                   ^-- SC2140: Word is of the form "A"B"C" (B indicated). Did you mean "ABC" or "A\"B\"C"?


In modules/confluent/files/kafka/kafka.sh line 101:
"kafka-preferred-replica-election "\
                                   ^-- SC2140: Word is of the form "A"B"C" (B indicated). Did you mean "ABC" or "A\"B\"C"?


In modules/confluent/files/kafka/kafka.sh line 102:
"kafka-reassign-partitions "\
                            ^-- SC2140: Word is of the form "A"B"C" (B indicated). Did you mean "ABC" or "A\"B\"C"?


In modules/confluent/files/kafka/kafka.sh line 103:
"kafka-replay-log-producer "\
                            ^-- SC2140: Word is of the form "A"B"C" (B indicated). Did you mean "ABC" or "A\"B\"C"?


In modules/confluent/files/kafka/kafka.sh line 117:
echo ${command} ${EXTRA_OPTS}"$@"
     ^-- SC2086: Double quote to prevent globbing and word splitting.
                ^-- SC2086: Double quote to prevent globbing and word splitting.
                              ^-- SC2145: Argument mixes string and array. Use * or separate argument.


In modules/confluent/files/kafka/kafka.sh line 118:
${command} ${EXTRA_OPTS}"$@"
           ^-- SC2086: Double quote to prevent globbing and word splitting.
                         ^-- SC2145: Argument mixes string and array. Use * or separate argument.


In modules/role/files/logging/logspam-watch.sh line 5:
. /etc/profile.d/mw-log.sh
^-- SC1091: Not following: /etc/profile.d/mw-log.sh was not specified as input (see shellcheck -x).


In modules/role/files/mariadb/redact_sanitarium.sh line 9:
case ${flag} in
^-- SC2220: Invalid flags are not handled. Add a *) case.


In modules/role/files/mariadb/redact_sanitarium.sh line 40:
for tbl in $(egrep ',F' "${filtered_tables_file}" | awk -F ',' '{print $1}' | uniq); do
             ^-- SC2196: egrep is non-standard and deprecated. Use grep -E instead.


In modules/role/files/mariadb/redact_sanitarium.sh line 48:
    for col in $(egrep "${tbl},.*,F" "${filtered_tables_file}" | awk -F ',' '{print $2}'); do
               ^-- SC2013: To read lines rather than words, pipe/redirect to a 'while read' loop.
                 ^-- SC2196: egrep is non-standard and deprecated. Use grep -E instead.


In modules/lvm/tests/beaker/test_run_scripts/integration_tests.sh line 6:
SCRIPT_BASE_PATH=`eval ${BASENAME_CMD}`
                 ^-- SC2006: Use $(..) instead of legacy `..`.
                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/lvm/tests/beaker/test_run_scripts/integration_tests.sh line 8:
if [ $SCRIPT_BASE_PATH = "test_run_scripts" ]; then
     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/lvm/tests/beaker/test_run_scripts/integration_tests.sh line 9:
  cd ../
  ^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.


In modules/lvm/tests/beaker/test_run_scripts/integration_tests_aix.sh line 6:
SCRIPT_BASE_PATH=`eval ${BASENAME_CMD}`
                 ^-- SC2006: Use $(..) instead of legacy `..`.
                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/lvm/tests/beaker/test_run_scripts/integration_tests_aix.sh line 8:
if [ $SCRIPT_BASE_PATH = "test_run_scripts" ]; then
     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/lvm/tests/beaker/test_run_scripts/integration_tests_aix.sh line 9:
  cd ../
  ^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.


In modules/conftool/files/ispooled.sh line 16:
/usr/bin/confctl select name="${hostname}",service=$1 get |
                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/conftool/files/conftool-simple-command.sh line 28:
        printf "\033[0;31mYou cannot pool a node where weight is equal to 0\033[0m\n"
                ^-- SC1117: Backslash is literal in "\0". Prefer explicit escaping: "\\0".
                                                                           ^-- SC1117: Backslash is literal in "\0". Prefer explicit escaping: "\\0".
                                                                                  ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/profile/files/homer/check_homer_diff.sh line 19:
echo -e "${DIFF}\n\n${INFO}" | mail -s "[Homer] Device live config differs from committed one" "${ADDRESS}"
                ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                  ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/profile/files/eventstreams/check_eventstreams.sh line 18:
curl -s --max-time $timeout --header "X-Client-IP: $(hostname -i)" $url | head -n 5 | grep -qE '^data:'
                   ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/toolforge/40-tools-bastion-banner.sh line 11:
   |    |_____| |_____| |_____ |       |_____| |    \_ |_____| |______
                                                    ^-- SC1117: Backslash is literal in "\_". Prefer explicit escaping: "\\_".


In modules/profile/files/toolforge/40-tools-infrastructure-banner.sh line 9:
     / \    This server is part of the Toolforge infrastructure.
              ^-- SC1117: Backslash is literal in "\". Prefer explicit escaping: "\\".


In modules/profile/files/toolforge/40-tools-infrastructure-banner.sh line 10:
    / ! \
                         ^-- SC1117: Backslash is literal in "\". Prefer explicit escaping: "\\".


In modules/profile/files/toolforge/40-tools-infrastructure-banner.sh line 11:
   /_____\         "No user-serviceable parts inside."
                ^-- SC1117: Backslash is literal in "\". Prefer explicit escaping: "\\".


In modules/profile/files/toolforge/gridscripts/dequeuegridnodes.sh line 12:
if [ `hostname` != 'tools-master' ]; then
     ^-- SC2046: Quote this to prevent word splitting.
     ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/profile/files/toolforge/gridscripts/killgridjobs.sh line 15:
if [ `hostname` != 'tools-bastion-01' ]; then
     ^-- SC2046: Quote this to prevent word splitting.
     ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/profile/files/toolforge/gridscripts/killgridjobs.sh line 22:
    qhost -j -h $host | grep task
                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/toolforge/gridscripts/killgridjobs.sh line 23:
    qdel $(qhost -j -h $host |grep task|sed -e 's/^\s*//' | cut -d ' ' -f 1|egrep ^[0-9])
         ^-- SC2046: Quote this to prevent word splitting.
                       ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                            ^-- SC2196: egrep is non-standard and deprecated. Use grep -E instead.


In modules/profile/files/toolforge/gridscripts/killgridjobs.sh line 34:
    qmod -rj $(qhost -j -h $host| sed -e 's/^\s*//' | cut -d ' ' -f 1|egrep ^[0-9])
             ^-- SC2046: Quote this to prevent word splitting.
                           ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                      ^-- SC2196: egrep is non-standard and deprecated. Use grep -E instead.


In modules/profile/files/toolforge/gridscripts/requeuegridnodes.sh line 12:
if [ `hostname` != 'tools-master' ]; then
     ^-- SC2046: Quote this to prevent word splitting.
     ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/profile/files/toolforge/40-toolsbeta-bastion-banner.sh line 11:
|_____] |______    |    |     | |       |_____| |    \_ |_____| |______
                                                     ^-- SC1117: Backslash is literal in "\_". Prefer explicit escaping: "\\_".


In modules/profile/files/toolforge/40-toolsbeta-infrastructure-banner.sh line 9:
     / \    This server is part of the Toolforge infrastructure.
              ^-- SC1117: Backslash is literal in "\". Prefer explicit escaping: "\\".


In modules/profile/files/toolforge/40-toolsbeta-infrastructure-banner.sh line 10:
    / ! \
                         ^-- SC1117: Backslash is literal in "\". Prefer explicit escaping: "\\".


In modules/profile/files/toolforge/40-toolsbeta-infrastructure-banner.sh line 11:
   /_____\         "No user-serviceable parts inside."
                ^-- SC1117: Backslash is literal in "\". Prefer explicit escaping: "\\".


In modules/profile/files/hadoop/spark2/spark2_yarn_shuffle_jar_install.sh line 11:
spark2_yarn_shuffle_jar=$(find /usr/lib/spark2/yarn -name spark*yarn-shuffle.jar | head -n 1)
                                                          ^-- SC2061: Quote the parameter to -name so the shell won't interpret it.


In modules/profile/files/hadoop/spark2/spark2_yarn_shuffle_jar_install.sh line 13:
if [ ! -f $spark2_yarn_shuffle_jar ]; then
          ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/hadoop/spark2/spark2_yarn_shuffle_jar_install.sh line 20:
if [ $spark2_yarn_shuffle_jar -ef $yarn_lib_dir/spark2-yarn-shuffle.jar ]; then
     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/hadoop/spark2/spark2_yarn_shuffle_jar_install.sh line 36:
ln -sfv $spark2_yarn_shuffle_jar $yarn_lib_dir/spark2-yarn-shuffle.jar
        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/hadoop/spark2/spark2_upload_assembly.sh line 14:
hdfs dfs -test -e $spark2_assembly_hdfs_path && echo "No need to deploy ${spark2_assembly_local_path} on HDFS, ${spark2_assembly_hdfs_path} already exists." && exit 0
                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/hadoop/spark2/spark2_upload_assembly.sh line 17:
/usr/bin/hdfs dfs -put $spark2_assembly_local_path $spark2_assembly_hdfs_path
                       ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/hadoop/spark2/spark2_oozie_sharelib_install.sh line 16:
if [ $(/usr/bin/whoami) != "oozie" ]; then
     ^-- SC2046: Quote this to prevent word splitting.


In modules/profile/files/hadoop/spark2/spark2_oozie_sharelib_install.sh line 22:
/usr/bin/test -f /etc/profile.d/oozie.sh && source /etc/profile.d/oozie.sh
                                            ^-- SC1091: Not following: /etc/profile.d/oozie.sh was not specified as input (see shellcheck -x).


In modules/profile/files/hadoop/spark2/spark2_oozie_sharelib_install.sh line 42:
hdfs dfs -test -e $spark2_sharelib_dir && echo "No need to build and install ${spark2_sharelib} oozie sharelib: ${spark2_sharelib_dir} already exists." && exit 0
                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/hadoop/spark2/spark2_oozie_sharelib_install.sh line 53:
/usr/bin/hdfs dfs -mkdir -p $spark2_sharelib_dir
                            ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/hadoop/spark2/spark2_oozie_sharelib_install.sh line 56:
/usr/bin/hdfs dfs -put /usr/lib/spark2/jars/* $spark2_sharelib_dir/
                                              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/hadoop/spark2/spark2_oozie_sharelib_install.sh line 59:
/usr/bin/hdfs dfs -put  /usr/lib/spark2/python/lib/py* $spark2_sharelib_dir/
                                                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/hadoop/spark2/spark2_oozie_sharelib_install.sh line 62:
/usr/bin/hdfs dfs -put /usr/lib/oozie/oozie-sharelib-yarn/lib/spark/oozie-sharelib-spark*.jar $spark2_sharelib_dir/
                                                                                              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/hadoop/spark2/spark2_oozie_sharelib_install.sh line 65:
/usr/bin/hdfs dfs -test -e /user/hive/hive-site.xml && /usr/bin/hdfs dfs -cp /user/hive/hive-site.xml $spark2_sharelib_dir/ || echo "Warning: could not install hive-site.xml into ${spark2_sharelib_dir}.  You might have to do this manually."
                                                                                                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/hadoop/spark2/spark2_oozie_sharelib_install.sh line 70:
/usr/bin/curl $OOZIE_URL/v2/admin/update_sharelib | jq .
              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/hadoop/spark2/spark2_oozie_sharelib_install.sh line 71:
/usr/bin/oozie admin -shareliblist | grep -q $spark2_sharelib || \
                                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/fastnetmon/check_fastnetmon.sh line 5:
WARNING=1
^-- SC2034: WARNING appears unused. Verify use (or export if used externally).


In modules/profile/files/fastnetmon/check_fastnetmon.sh line 17:
CONTENTS="$(ls $DIRECTORY)"
               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/fastnetmon/check_fastnetmon.sh line 18:
if [ $? -ne 0 ]; then
     ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.


In modules/profile/files/redis/restart-redis-if-slave.sh line 5:
sleep $(($RANDOM % 600))
         ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In modules/profile/files/kubernetes/scap-helm.sh line 2:
echo -ne "!!!!!!!!! scap-helm is no more !!!!!!!!!\n
                                                  ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/profile/files/kubernetes/scap-helm.sh line 4:
for advices for migrating from it\n"
                                 ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/profile/files/prometheus/prometheus-openstack-exporter-wrapper.sh line 13:
source /root/novaenv.sh
^-- SC1091: Not following: /root/novaenv.sh was not specified as input (see shellcheck -x).


In modules/profile/files/openstack/base/novaobserver/observerenv.sh line 1:
# 'source observerenv.sh' will set these shell environment values
^-- SC2148: Tips depend on target shell and yours is unknown. Add a shebang.


In modules/profile/files/openstack/base/novaobserver/observerenv.sh line 19:
    sed -ne "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" \
                ^-- SC1117: Backslash is literal in "\(". Prefer explicit escaping: "\\(".
                    ^-- SC1117: Backslash is literal in "\)". Prefer explicit escaping: "\\)".
                      ^-- SC1117: Backslash is literal in "\(". Prefer explicit escaping: "\\(".
                          ^-- SC1117: Backslash is literal in "\)". Prefer explicit escaping: "\\)".
                                   ^-- SC1117: Backslash is literal in "\(". Prefer explicit escaping: "\\(".
                                       ^-- SC1117: Backslash is literal in "\)". Prefer explicit escaping: "\\)".
                                                ^-- SC1117: Backslash is literal in "\1". Prefer explicit escaping: "\\1".
                                                     ^-- SC1117: Backslash is literal in "\2". Prefer explicit escaping: "\\2".
                                                          ^-- SC1117: Backslash is literal in "\3". Prefer explicit escaping: "\\3".


In modules/profile/files/openstack/base/novaobserver/observerenv.sh line 20:
         -e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p"  $file |
                ^-- SC1117: Backslash is literal in "\(". Prefer explicit escaping: "\\(".
                    ^-- SC1117: Backslash is literal in "\)". Prefer explicit escaping: "\\)".
                      ^-- SC1117: Backslash is literal in "\(". Prefer explicit escaping: "\\(".
                          ^-- SC1117: Backslash is literal in "\)". Prefer explicit escaping: "\\)".
                                 ^-- SC1117: Backslash is literal in "\(". Prefer explicit escaping: "\\(".
                                     ^-- SC1117: Backslash is literal in "\)". Prefer explicit escaping: "\\)".
                                            ^-- SC1117: Backslash is literal in "\1". Prefer explicit escaping: "\\1".
                                                 ^-- SC1117: Backslash is literal in "\2". Prefer explicit escaping: "\\2".
                                                      ^-- SC1117: Backslash is literal in "\3". Prefer explicit escaping: "\\3".


In modules/profile/files/openstack/base/novaobserver/observerenv.sh line 21:
    awk -F$fs '{
          ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/openstack/base/novaobserver/observerenv.sh line 32:
values=`parse_yaml`
       ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/profile/files/openstack/base/novaobserver/observerenv.sh line 34:
    export $entry
           ^-- SC2163: This does not export 'entry'. Remove $/${} for that, or use ${var?} to quiet.
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/mediawiki/php/nrpe_check_opcache.sh line 41:
scripts=$(echo $OUT | jq .opcache_statistics.num_cached_scripts)
               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/mediawiki/php/nrpe_check_opcache.sh line 42:
hits=$(echo $OUT | jq .opcache_statistics.hits)
            ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/mediawiki/php/nrpe_check_opcache.sh line 48:
WARNING_THRESHOLD=$(expr "$scripts" '*' 10000) # 1 miss out of 10k => 99.99%
                    ^-- SC2003: expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]].


In modules/profile/files/mediawiki/php/nrpe_check_opcache.sh line 49:
CRITICAL_THRESHOLD=$(expr "$scripts" '*' 10000 '/' 15) # 15 misses out of 10k => 99.85%
                     ^-- SC2003: expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]].


In modules/profile/files/mediawiki/php/nrpe_check_opcache.sh line 51:
    hitrate=$(echo $OUT | jq .opcache_statistics.opcache_hit_rate)
                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/mediawiki/php/nrpe_check_opcache.sh line 64:
freespace=$(echo $OUT | jq .memory_usage.free_memory/1024/1024)
                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/mediawiki/php/nrpe_check_opcache.sh line 65:
if numGe $critical $freespace; then
         ^-- SC2086: Double quote to prevent globbing and word splitting.
                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/mediawiki/php/nrpe_check_opcache.sh line 70:
if numGe $warning $freespace; then
         ^-- SC2086: Double quote to prevent globbing and word splitting.
                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/profile/files/puppetmaster/update-netboot-image.sh line 15:
WD=`mktemp -d`
   ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/profile/files/puppetmaster/update-netboot-image.sh line 16:
cd "$WD"
^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.


In modules/parsoid/files/parsoid_testing.update_parsoid.sh line 29:
ln -s -f /srv/deployment/parsoid/deploy/node_modules
^-- SC2226: This ln has no destination. Check the arguments, or specify '.' explicitly.


In modules/ipmi/files/ipmi_mgmt.sh line 10:
if [ -z $1 ] # if there is no host, assume they need instructions
        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 22:
                        bmcinfo) ipmitool -I lanplus -U root -E -H $1 bmc info;;
                                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 23:
                        bmcreset) ipmitool -I lanplus -U root -E -H $1 bmc reset cold;;
                                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 24:
                        bootbios) ipmitool -I lanplus -U root -E -H $1 chassis bootdev bios;;
                                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 25:
                        bootcdrom) ipmitool -I lanplus -U root -E -H $1 chassis bootdev cdrom;;
                                                                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 26:
                        bootdisk) ipmitool -I lanplus -U root -E -H $1 chassis bootdev disk;;
                                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 27:
                        bootfloppy) ipmitool -I lanplus -U root -E -H $1 chassis bootdev floppy;;
                                                                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 28:
                        bootpxe) ipmitool -I lanplus -U root -E -H $1 chassis bootdev pxe;;
                                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 29:
                        console) ipmitool -I lanplus -U root -E -H $1 sol activate ;; # serial console 
                                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 30:
                        consoleclose) ipmitool -I lanplus -U root -E -H $1 sol deactivate ;; # serial console 
                                                                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 31:
                        fru) ipmitool -I lanplus -U root -E -H $1 fru ;;
                                                               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 32:
                        id) ipmitool -I lanplus -U root -E -H $1 chassis identify ;; # Chassis ID for 15 seconds for onsite techs
                                                              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 33:
                        log) ipmitool -I lanplus -U root -E -H $1 sel list ;; # system BMC event log
                                                               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 34:
                        powercycle) ipmitool -I lanplus -U root -E -H $1 power cycle ;;
                                                                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 35:
                        powerdown) ipmitool -I lanplus -U root -E -H $1 power down ;;
                                                                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 36:
                        powermonitor) ipmitool -I lanplus -U root -E -H $1 delloem powermonitor;;
                                                                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 37:
                        powerstatus) ipmitool -I lanplus -U root -E -H $1 power status ;;
                                                                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 38:
                        powerup) ipmitool -I lanplus -U root -E -H $1 power up ;;
                                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 39:
                        sdr) ipmitool -I lanplus -U root -E -H $1 sdr ;;
                                                               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 40:
                        sensor) ipmitool -I lanplus -U root -E -H $1 sensor ;;
                                                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ipmi/files/ipmi_mgmt.sh line 41:
                        sysinfo) ipmitool -I lanplus -U root -E -H $1 delloem sysinfo ;;
                                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/osm/files/osm_sync_lag.sh line 9:
timestamp=$(awk -F= '/^timestamp=/ { print $2 }' $state_path | tr -d \\\\)
                                                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/osm/files/osm_sync_lag.sh line 10:
lag=$(date "+%s" --date=${timestamp})
                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/osm/files/osm_sync_lag.sh line 11:
echo "osm_sync_timestamp" $lag > $prometheus_path.$$
                          ^-- SC2086: Double quote to prevent globbing and word splitting.
                                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/osm/files/osm_sync_lag.sh line 12:
mv $prometheus_path.$$ $prometheus_path
   ^-- SC2086: Double quote to prevent globbing and word splitting.
                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/osm/files/process-osm-data.sh line 100:
\copy loading.osmborder_lines FROM $PLANET_DIR/osmborder_lines.csv
^-- SC1117: Backslash is literal in "\c". Prefer explicit escaping: "\\c".


In modules/osm/files/process-osm-data.sh line 154:
  osm2pgsql $osm2pgsql_common_opts $osm2pgsql_import_opts --create --slim \
            ^-- SC2086: Double quote to prevent globbing and word splitting.
                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/osm/files/process-osm-data.sh line 176:
  . state.txt
  ^-- SC1091: Not following: state.txt was not specified as input (see shellcheck -x).


In modules/osm/files/process-osm-data.sh line 178:
  file="$PWD/changes-${sequenceNumber}.osm.gz"
                     ^-- SC2154: sequenceNumber is referenced but not assigned.


In modules/osm/files/process-osm-data.sh line 182:
  . state.txt
  ^-- SC1091: Not following: state.txt was not specified as input (see shellcheck -x).


In modules/osm/files/process-osm-data.sh line 187:
    rm ${file}
       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/osm/files/process-osm-data.sh line 200:
    osm2pgsql $osm2pgsql_common_opts $osm2pgsql_update_opts --append --slim \
              ^-- SC2086: Double quote to prevent globbing and word splitting.
                                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/osm/files/process-osm-data.sh line 218:
  if [ "$really" != "yes" ]; then
        ^-- SC2154: really is referenced but not assigned.


In modules/osm/files/process-osm-data.sh line 252:
    setup_data $@
               ^-- SC2068: Double quote array expansions to avoid re-splitting elements.


In modules/postgresql/files/prometheus/postgresql_replication_lag.sh line 48:
echo "postgresql_replication_lag_bytes ${lag}" > ${prometheus_path}.$$
                                                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/postgresql/files/prometheus/postgresql_replication_lag.sh line 49:
mv ${prometheus_path}.$$ ${prometheus_path}
   ^-- SC2086: Double quote to prevent globbing and word splitting.
                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mcrouter/files/nrpe_check_client_cert/generate_test_ca_and_cert.sh line 11:
    openssl ecparam -genkey -name secp256r1 2> /dev/null | openssl ec -out $OUTDIR/${NAME_CA}.key &> /dev/null
                                                                           ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mcrouter/files/nrpe_check_client_cert/generate_test_ca_and_cert.sh line 12:
    openssl req -new -x509 -subj "/C=US/ST=CA/O=MyOrg, Inc./CN=mydomain.com" -days ${CADAYS} -key $OUTDIR/${NAME_CA}.key -out $OUTDIR/${NAME_CA}.pem &> /dev/null
                                                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                  ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                          ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                                              ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                                                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mcrouter/files/nrpe_check_client_cert/generate_test_ca_and_cert.sh line 14:
    openssl ecparam -genkey -name secp256r1  2> /dev/null | openssl ec -out $OUTDIR/${CERT_NAME}.key &> /dev/null
                                                                            ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mcrouter/files/nrpe_check_client_cert/generate_test_ca_and_cert.sh line 15:
    openssl req -new  -subj "/C=US/ST=CA/O=MyOrg, Inc./CN=mydomain.com" -key $OUTDIR/${CERT_NAME}.key -out $OUTDIR/${CERT_NAME}.csr &> /dev/null
                                                                             ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                     ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                           ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mcrouter/files/nrpe_check_client_cert/generate_test_ca_and_cert.sh line 16:
    openssl x509 -req -days ${CERTDAYS} -in $OUTDIR/${CERT_NAME}.csr -CA $OUTDIR/${NAME_CA}.pem -CAkey $OUTDIR/${NAME_CA}.key -set_serial 1 -out $OUTDIR/${CERT_NAME}.pem &> /dev/null
                            ^-- SC2086: Double quote to prevent globbing and word splitting.
                                            ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                         ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                 ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                       ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                               ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                                                                 ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                                                                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mcrouter/files/nrpe_check_client_cert/generate_test_ca_and_cert.sh line 20:
    generate_ca_and_cert 1_expired_ca 1 1_valid_cert 30000 $1
                                                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mcrouter/files/nrpe_check_client_cert/generate_test_ca_and_cert.sh line 21:
    generate_ca_and_cert 2_valid_ca 30000 2_valid_cert 30000 $1
                                                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mcrouter/files/nrpe_check_client_cert/generate_test_ca_and_cert.sh line 22:
    generate_ca_and_cert 3_valid_ca 30000 3_expired_cert 0 $1
                                                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mcrouter/files/nrpe_check_client_cert/generate_test_ca_and_cert.sh line 23:
    generate_ca_and_cert 4_expired_ca 1 4_expired_cert 0 $1
                                                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/mcrouter/files/nrpe_check_client_cert/generate_test_ca_and_cert.sh line 26:
main $1
     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/kibana/files/upgrade-phatality.sh line 5:
/usr/bin/sudo -u kibana /usr/share/kibana/bin/kibana-plugin install file://$PHATALITY_PKG
                                                                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/cdh/files/hive/hiveserver2.sh line 1:
#####################################################################
^-- SC2148: Tips depend on target shell and yours is unknown. Add a shebang.


In modules/cdh/files/hive/hiveserver2.sh line 25:
  if $cygwin; then
     ^-- SC2154: cygwin is referenced but not assigned.


In modules/cdh/files/hive/hiveserver2.sh line 26:
    HIVE_LIB=`cygpath -w "$HIVE_LIB"`
             ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/cdh/files/hive/hiveserver2.sh line 28:
  JAR=${HIVE_LIB}/hive-service-[0-9].*.jar
      ^-- SC2125: Brace expansions and globs are literal in assignments. Quote it or use an array.


In modules/cdh/files/hive/hiveserver2.sh line 35:
      export SENTRY_HOME=`readlink -m ${HIVE_HOME}/../sentry`
             ^-- SC2155: Declare and assign separately to avoid masking return values.
                         ^-- SC2006: Use $(..) instead of legacy `..`.
                                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/cdh/files/hive/hiveserver2.sh line 40:
    for f in ${SENTRY_HOME}/lib/*.jar; do
             ^-- SC2231: Quote expansions in this for loop glob to prevent wordsplitting, e.g. "$dir"/*.txt .


In modules/cdh/files/hive/hiveserver2.sh line 48:
  exec $HADOOP jar $JAR $CLASS $HIVE_OPTS "$@"
       ^-- SC2086: Double quote to prevent globbing and word splitting.
                   ^-- SC2086: Double quote to prevent globbing and word splitting.
                               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/cdh/files/hadoop/create_hdfs_user_directories.sh line 31:
if [ $(whoami) != 'hdfs' ]; then
     ^-- SC2046: Quote this to prevent word splitting.


In modules/cdh/files/hadoop/create_hdfs_user_directories.sh line 93:
groups="$@"
       ^-- SC2124: Assigning an array to a string! Assign as array, or use * instead of @ to concatenate.


In modules/cdh/files/hadoop/create_hdfs_user_directories.sh line 94:
group_members=$(/usr/bin/getent group ${groups} | /usr/bin/awk -F ':' '{print $NF}' | tr ',' '\n' | sort | uniq)
                                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/cdh/files/hadoop/create_hdfs_user_directories.sh line 101:
if [ "${dry_run}" == 'true' -a "${check_for_changes}" == 'false' ]; then
                            ^-- SC2166: Prefer [ p ] && [ q ] as [ p -a q ] is not well defined.


In modules/thumbor/files/generate-thumbor-age-metrics.sh line 7:
    /usr/bin/awk -v RS="" -v OFS="=" -v HOSTNAME=$(/bin/hostname) '{
                                                 ^-- SC2046: Quote this to prevent word splitting.


In modules/thumbor/files/generate-thumbor-age-metrics.sh line 10:
        print "thumbor." HOSTNAME \
                                  ^-- SC1004: This backslash+linefeed is literal. Break outside single quotes if you just want to break the line.


In modules/thumbor/files/generate-thumbor-age-metrics.sh line 11:
          ".process." id[2] \
                            ^-- SC1004: This backslash+linefeed is literal. Break outside single quotes if you just want to break the line.


In modules/install_server/files/autoinstall/scripts/late_command.sh line 15:
if printf $LSB_RELEASE | grep -qv buster
          ^-- SC2059: Don't use variables in the printf format string. Use printf "..%s.." "$foo".
          ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/install_server/files/autoinstall/scripts/late_command.sh line 33:
chroot /target /bin/sh -c 'echo $(cat /etc/issue.net) auto-installed on $(date). > /etc/motd.tail'
                          ^-- SC2016: Expressions don't expand in single quotes, use double quotes for that.


In modules/install_server/files/autoinstall/scripts/late_command.sh line 38:
case `hostname` in \
     ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/install_server/files/autoinstall/scripts/late_command.sh line 62:
case `hostname` in \
     ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/install_server/files/autoinstall/scripts/early_command.sh line 7:
IP=$(ip address show dev $IFACE | egrep '^[[:space:]]+inet ' | cut -d ' ' -f 6 | cut -d '/' -f 1)
                         ^-- SC2086: Double quote to prevent globbing and word splitting.
                                  ^-- SC2196: egrep is non-standard and deprecated. Use grep -E instead.


In modules/install_server/files/autoinstall/scripts/early_command.sh line 29:
echo d-i apt-setup/local0/repository string deb http://apt.wikimedia.org/wikimedia $SUITE $COMPONENTS > /tmp/apt_repository.cfg
                                                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                          ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/redis/files/nrpe_check_redis.sh line 12:
    awk "{if (\$1 == \"${_what}\") {for (i=2; i<NF; i++) printf \$i \" \"; print \$NF}}" $_config
                                                                                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/redis/files/nrpe_check_redis.sh line 24:
    _slaveof=$(get_in_redis_config "slaveof" $incl | tr ' ' ':')
                                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/redis/files/nrpe_check_redis.sh line 30:
/usr/lib/nagios/plugins/check_redis $_opts
                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/swift/files/swiftrepl-mw.sh line 66:
    (cd $srcdir &&
        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/wikistats/files/deploy-wikistats.sh line 14:
  echo -e "\nfirst running puppet to git pull\n"
           ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                             ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/wikistats/files/deploy-wikistats.sh line 16:
  echo -e "\ndeploying files from git repository (${pp}/${pn})\n"
           ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                              ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/wikistats/files/deploy-wikistats.sh line 19:
    mkdir -p /${dp}/${pn}
              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/wikistats/files/deploy-wikistats.sh line 21:
    rsync -avp ${pp}/${pn}/${dp}/${pn}/ /${dp}/${pn}/
                           ^-- SC2086: Double quote to prevent globbing and word splitting.
                                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/wikistats/files/deploy-wikistats.sh line 24:
  echo -e "\ninsert db password not included in public repo\n"
           ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                           ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/wikistats/files/deploy-wikistats.sh line 25:
  echo -e "sed -i \"s/<not included>/${dbpass}/g\" /etc/${pn}/config.php\n"
                                                                        ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/wikistats/files/deploy-wikistats.sh line 32:
  echo -e "\nbacking up files to to backup location {${bp})\n"
           ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                           ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/wikistats/files/deploy-wikistats.sh line 35:
    mkdir -p ${bp}/${pn}/${dp}/${pn}
                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/wikistats/files/deploy-wikistats.sh line 37:
    rsync -avp /${dp}/${pn}/ ${bp}/${pn}/${dp}/${pn}/
                ^-- SC2086: Double quote to prevent globbing and word splitting.
                                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/wikistats/files/deploy-wikistats.sh line 44:
  echo -e "\nrestoring files, deploy from backup location (${bp})\n"
           ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                 ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/wikistats/files/deploy-wikistats.sh line 47:
    mkdir -p /${dp}/${pn}
              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/wikistats/files/deploy-wikistats.sh line 49:
    rsync -avp ${bp}/${pn}/${dp}/${pn}/ /${dp}/${pn}/
                           ^-- SC2086: Double quote to prevent globbing and word splitting.
                                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/wikistats/files/deploy-wikistats.sh line 56:
  echo -e "usage: $0 <action>. action can be one of "deploy", "backup" or "restore"\n"
                                                     ^-- SC2140: Word is of the form "A"B"C" (B indicated). Did you mean "ABC" or "A\"B\"C"?
                                                               ^-- SC2140: Word is of the form "A"B"C" (B indicated). Did you mean "ABC" or "A\"B\"C"?
                                                                           ^-- SC2140: Word is of the form "A"B"C" (B indicated). Did you mean "ABC" or "A\"B\"C"?
                                                                                   ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/wikistats/files/deploy-wikistats.sh line 57:
  echo -e "deploy: syncs file from ${pp}/${pn} (where puppet git pulls to automatically) into the right places.\n"
                                                                                                               ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/wikistats/files/deploy-wikistats.sh line 58:
  echo -e "backup: syncs files currently used to a backup location at ${bp}.\n"
                                                                            ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/wikistats/files/deploy-wikistats.sh line 59:
  echo -e "restore: syncs file from the backup location {$bp} into the right places.\n"
                                                                                    ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/geoip/files/archive.sh line 16:
hdfs dfs -mkdir -p $HDFS_ARCHIVE_DIR
                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/vagrant/files/alias-vagrant-profile-d.sh line 1:
alias vagrant=/usr/local/bin/mwvagrant
^-- SC2148: Tips depend on target shell and yours is unknown. Add a shebang.


In modules/statistics/files/hardsync.sh line 7:
script_name=$(basename $0)
                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/statistics/files/hardsync.sh line 56:
    echo $(date +"%Y-%m-%dT%H:%M:%S") "$@"
         ^-- SC2046: Quote this to prevent word splitting.


In modules/statistics/files/hardsync.sh line 61:
    log ERROR: $@
               ^-- SC2068: Double quote array expansions to avoid re-splitting elements.


In modules/statistics/files/hardsync.sh line 67:
    echo $(stat -c "%d" "${1}")
         ^-- SC2046: Quote this to prevent word splitting.
         ^-- SC2005: Useless echo? Instead of 'echo $(cmd)', just use 'cmd'.


In modules/statistics/files/hardsync.sh line 74:
    if [ $verbose -eq 1 ]; then
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/statistics/files/hardsync.sh line 75:
        log $@
            ^-- SC2068: Double quote array expansions to avoid re-splitting elements.


In modules/statistics/files/hardsync.sh line 77:
    if [ $dry_run -eq 0 ]; then
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/statistics/files/hardsync.sh line 78:
        $@
        ^-- SC2068: Double quote array expansions to avoid re-splitting elements.


In modules/statistics/files/hardsync.sh line 88:
    case "$opt" in
    ^-- SC2220: Invalid flags are not handled. Add a *) case.


In modules/statistics/files/hardsync.sh line 108:
source_dirs=${@:1:$argc}
            ^-- SC2124: Assigning an array to a string! Assign as array, or use * instead of @ to concatenate.


In modules/statistics/files/hardsync.sh line 114:
test -d "${dest_dir}" || cmd mkdir -p $dest_dir
                                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/statistics/files/hardsync.sh line 117:
if [ -z "${source_dirs}" -o -z "${dest_dir}" ]; then
                         ^-- SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined.


In modules/statistics/files/hardsync.sh line 126:
if [ $(device_number_of_file "${base_temp_dir}") -ne $device_number ]; then
     ^-- SC2046: Quote this to prevent word splitting.
                                                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/statistics/files/hardsync.sh line 132:
    test -d $source_dir || fatal "Source directory '${source_dir}' is not a directory. Aborting."
            ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/statistics/files/hardsync.sh line 134:
    if [ $(device_number_of_file "${source_dir}") -ne $device_number ]; then
         ^-- SC2046: Quote this to prevent word splitting.
                                                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/statistics/files/hardsync.sh line 149:
temp_dest=$(mktemp -d$mktemp_dry_run $base_temp_dir/.hardsync.$(basename $dest_dir).XXXXXXXXXXXX)
                                     ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                              ^-- SC2046: Quote this to prevent word splitting.
                                                                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/statistics/files/hardsync.sh line 153:
temp_dest_trash=$(mktemp -d$mktemp_dry_run $base_temp_dir/.hardsync.$(basename $dest_dir).trash.XXXXXXXXXXXX)
                                           ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                    ^-- SC2046: Quote this to prevent word splitting.
                                                                               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/statistics/files/hardsync.sh line 157:
    cmd cp -al $source_dir/* $temp_dest/
               ^-- SC2086: Double quote to prevent globbing and word splitting.
                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/statistics/files/hardsync.sh line 161:
test -e $dest_dir && cmd mv -f $dest_dir $temp_dest_trash
        ^-- SC2086: Double quote to prevent globbing and word splitting.
                               ^-- SC2086: Double quote to prevent globbing and word splitting.
                                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/statistics/files/hardsync.sh line 162:
cmd chmod 755 $temp_dest
              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/statistics/files/hardsync.sh line 163:
cmd mv -f $temp_dest $dest_dir
          ^-- SC2086: Double quote to prevent globbing and word splitting.
                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/statistics/files/hardsync.sh line 164:
cmd rm -rf $temp_dest_trash
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/tilerator/files/notify-tilerator-regen.sh line 18:
        -j.zoom $zoom \
                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/tilerator/files/notify-tilerator-regen.sh line 19:
        -j.fromZoom $from_zoom \
                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/tilerator/files/notify-tilerator-regen.sh line 20:
        -j.beforeZoom $before_zoom \
                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/tilerator/files/notify-tilerator-regen.sh line 21:
        -j.generatorId $generator_id \
                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/tilerator/files/notify-tilerator-regen.sh line 22:
        -j.storageId $storage_id \
                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/planet/templates/feeds/check_https.sh line 4:
for template in $(ls *.erb); do
                ^-- SC2045: Iterating over ls output is fragile. Use globs.
                     ^-- SC2035: Use ./*glob* or -- *glob* so names with dashes won't become options.


In modules/planet/templates/feeds/check_https.sh line 6:
    for http_url in $(grep -E 'feed.*http://' $template | cut -d " " -f3); do
                    ^-- SC2013: To read lines rather than words, pipe/redirect to a 'while read' loop.
                                              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/planet/templates/feeds/check_https.sh line 8:
        https_url=$(echo ${http_url} | sed 's/http/https/g')
                    ^-- SC2001: See if you can use ${variable//search/replace} instead.
                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/planet/templates/feeds/check_https.sh line 10:
        if curl -s --head --request GET $https_url | grep "200 OK" > /dev/null; then
                                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/planet/templates/feeds/check_https.sh line 12:
            echo -e "patching template ${template}\n"
                                                  ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/planet/templates/feeds/check_https.sh line 14:
            sed -i "s,${http_url},${https_url},g" $template
                                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/planet/templates/feeds/check_https.sh line 16:
            echo -e "NO - https does not seem to work.\n"
                                                      ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/snapshot/files/dumps/fulldumps.sh line 38:
    if [ $dryrun -ne 0 ]; then
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/dumps/fulldumps.sh line 46:
    commandargs="${repodir}/dumpscheduler.py --slots ${slots} --commands ${dumpsdir}/stages/${stagesfile} --cache ${dumpsdir}/cache/running_cache.txt --directory $repodir --formatvars STARTDATE=${startdate_yyyymmdd}"
                                                                         ^-- SC2154: dumpsdir is referenced but not assigned.


In modules/snapshot/files/dumps/fulldumps.sh line 54:
    configfile="${confsdir}/${conffile}"
                ^-- SC2154: confsdir is referenced but not assigned.


In modules/snapshot/files/dumps/fulldumps.sh line 55:
    lastrun=`$python dumpadmin.py -s lastrun --configfile $configfile`
            ^-- SC2006: Use $(..) instead of legacy `..`.
                                                          ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/dumps/fulldumps.sh line 59:
        if [ $dryrun -ne 0 ]; then
             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/dumps/fulldumps.sh line 62:
            $python $commandargs >> $logfile 2>&1
                    ^-- SC2086: Double quote to prevent globbing and word splitting.
                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/dumps/fulldumps.sh line 74:
    alldone=`$python dumpadmin.py -s alldone --configfile $configfile`
            ^-- SC2006: Use $(..) instead of legacy `..`.
                                                          ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/dumps/fulldumps.sh line 78:
        if [ $dryrun -ne 0 ]; then
             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/dumps/fulldumps.sh line 81:
            $python $commandargs >> $logfile 2>&1
                    ^-- SC2086: Double quote to prevent globbing and word splitting.
                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/dumps/fulldumps.sh line 89:
if [ -z "$1" -o -z "$2" -o -z "$3" -o -z "$4" -o -z "$5" ]; then
             ^-- SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined.
                        ^-- SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined.
                                   ^-- SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined.
                                              ^-- SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined.


In modules/snapshot/files/dumps/fulldumps.sh line 95:
yearmonth=`/bin/date +%Y%m`
          ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/dumps/fulldumps.sh line 114:
mypgroup=`ps --no-headers -o pgrp -p $$`
         ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/dumps/fulldumps.sh line 115:
fullpids=`pgrep -f fulldumps.sh`
         ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/dumps/fulldumps.sh line 117:
    pgroup=`ps --no-headers -o pgrp -p $pid`
           ^-- SC2006: Use $(..) instead of legacy `..`.
                                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/dumps/fulldumps.sh line 130:
source /usr/local/etc/set_dump_dirs.sh
^-- SC1091: Not following: /usr/local/etc/set_dump_dirs.sh was not specified as input (see shellcheck -x).


In modules/snapshot/files/dumps/fulldumps.sh line 132:
if [ -z "$repodir" -o ! -e "$repodir" ]; then
                   ^-- SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined.


In modules/snapshot/files/dumps/fulldumps.sh line 136:
cd $repodir
^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.


In modules/snapshot/files/dumps/fulldumps.sh line 138:
today=`/bin/date +%d`
      ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/dumps/fulldumps.sh line 202:
	if [ $? -ne 0 ]; then
             ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.


In modules/snapshot/files/dumps/fulldumps.sh line 214:
	if [ $? -ne 0 ]; then
             ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.


In modules/snapshot/files/dumps/fulldumps.sh line 224:
	if [ $? -ne 0 ]; then
             ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.


In modules/snapshot/files/dumps/fulldumps.sh line 235:
gzip $logfile 2>/dev/null
     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dump-global-blocks.sh line 7:
source /usr/local/etc/dump_functions.sh
^-- SC1091: Not following: /usr/local/etc/dump_functions.sh was not specified as input (see shellcheck -x).


In modules/snapshot/files/cron/dump-global-blocks.sh line 14:
        host=`$php -q "$multiversionscript" extensions/CentralAuth/maintenance/getCentralAuthDBInfo.php --wiki="aawiki"` || (echo $host >& 2; host="")
             ^-- SC2006: Use $(..) instead of legacy `..`.
                                                                                                                                  ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                                                              ^-- SC2030: Modification of host is local (to subshell caused by (..) group).


In modules/snapshot/files/cron/dump-global-blocks.sh line 16:
    if [ -z "$host" ]; then
             ^-- SC2031: host was modified in a subshell. That change might be lost.


In modules/snapshot/files/cron/dump-global-blocks.sh line 20:
    echo $host
         ^-- SC2031: host was modified in a subshell. That change might be lost.


In modules/snapshot/files/cron/dump-global-blocks.sh line 28:
        db_user=`echo 'echo $wgDBadminuser;' | $php "$multiversionscript" eval.php aawiki`
                ^-- SC2006: Use $(..) instead of legacy `..`.
                      ^-- SC2016: Expressions don't expand in single quotes, use double quotes for that.


In modules/snapshot/files/cron/dump-global-blocks.sh line 34:
    echo $db_user
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dump-global-blocks.sh line 42:
        db_pass=`echo 'echo $wgDBadminpassword;' | $php "$multiversionscript" eval.php aawiki`
                ^-- SC2006: Use $(..) instead of legacy `..`.
                      ^-- SC2016: Expressions don't expand in single quotes, use double quotes for that.


In modules/snapshot/files/cron/dump-global-blocks.sh line 48:
    echo $db_pass
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dump-global-blocks.sh line 59:
    today=`date +%Y%m%d`
          ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dump-global-blocks.sh line 66:
            echo -n "$mysqldump" -u "$db_user" -p"$db_pass" -h "$host" -P "$port" --opt --quick --skip-add-locks --skip-lock-tables centralauth "$t"
                                                                ^-- SC2031: host was modified in a subshell. That change might be lost.


In modules/snapshot/files/cron/dump-global-blocks.sh line 70:
            "$mysqldump" -u "$db_user" -p"$db_pass" -h "$host" -P "$port" --opt --quick --skip-add-locks --skip-lock-tables centralauth "$t" | "$gzip" > "$outputfile"
                                                        ^-- SC2031: host was modified in a subshell. That change might be lost.


In modules/snapshot/files/cron/dump-global-blocks.sh line 79:
    echo "             (default value: ${confsdir}/wikidump.conf.other" >& 2
                                       ^-- SC2154: confsdir is referenced but not assigned.


In modules/snapshot/files/cron/dump-global-blocks.sh line 88:
    if [ $1 == "--config" ]; then
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dump-global-blocks.sh line 91:
    elif [ $1 == "--dryrun" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dump-global-blocks.sh line 101:
results=`python3 "${repodir}/getconfigvals.py" --configfile "$configfile" --args "$args"`
        ^-- SC2006: Use $(..) instead of legacy `..`.
                  ^-- SC2154: repodir is referenced but not assigned.


In modules/snapshot/files/cron/dump-global-blocks.sh line 103:
multiversion=`getsetting "$results" "wiki" "multiversion"` || exit 1
             ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dump-global-blocks.sh line 104:
gzip=`getsetting "$results" "tools" "gzip"` || exit 1
     ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dump-global-blocks.sh line 105:
mysqldump=`getsetting "$results" "tools" "mysqldump"` || exit 1
          ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dump-global-blocks.sh line 106:
php=`getsetting "$results" "tools" "php"` || exit 1
    ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dump-global-blocks.sh line 112:
outputdir="${cronsdir}/globalblocks"
           ^-- SC2154: cronsdir is referenced but not assigned.


In modules/snapshot/files/cron/dump-global-blocks.sh line 114:
host=`get_db_host "$multiversion"` || exit 1
     ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dump-global-blocks.sh line 116:
    IFS=: read host port <<< "$host"
    ^-- SC2162: read without -r will mangle backslashes.


In modules/snapshot/files/cron/dump-global-blocks.sh line 120:
db_user=`get_db_user "$multiversion"` || exit 1
        ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dump-global-blocks.sh line 121:
db_pass=`get_db_pass "$multiversion"` || exit 1
        ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dump-machine-vision.sh line 7:
source /usr/local/etc/dump_functions.sh
^-- SC1091: Not following: /usr/local/etc/dump_functions.sh was not specified as input (see shellcheck -x).


In modules/snapshot/files/cron/dump-machine-vision.sh line 14:
        host=$( $php -q "$multiversionscript" getReplicaServer.php --wiki="commonswiki" ) || (echo $host >& 2; host="")
                                                                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                               ^-- SC2030: Modification of host is local (to subshell caused by (..) group).


In modules/snapshot/files/cron/dump-machine-vision.sh line 16:
    if [ -z "$host" ]; then
             ^-- SC2031: host was modified in a subshell. That change might be lost.


In modules/snapshot/files/cron/dump-machine-vision.sh line 20:
    echo $host
         ^-- SC2031: host was modified in a subshell. That change might be lost.


In modules/snapshot/files/cron/dump-machine-vision.sh line 31:
	db_user=$( echo $db_creds | /usr/bin/jq -M -r '.wgDBuser' )
                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dump-machine-vision.sh line 32:
	db_pass=$( echo $db_creds | /usr/bin/jq -M -r '.wgDBpassword' )
                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dump-machine-vision.sh line 52:
    today=`date +%Y%m%d`
          ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dump-machine-vision.sh line 59:
            echo -n "$mysqldump" -u "$db_user" -p"$db_pass" -h "$host" -P "$port" --opt --quick --skip-add-locks --skip-lock-tables commonswiki "$t"
                                                                ^-- SC2031: host was modified in a subshell. That change might be lost.


In modules/snapshot/files/cron/dump-machine-vision.sh line 63:
            "$mysqldump" -u "$db_user" -p"$db_pass" -h "$host" -P "$port" --opt --quick --skip-add-locks --skip-lock-tables commonswiki "$t" | "$gzip" > "$outputfile"
                                                        ^-- SC2031: host was modified in a subshell. That change might be lost.


In modules/snapshot/files/cron/dump-machine-vision.sh line 72:
    echo "             (default value: ${confsdir}/wikidump.conf.other" >& 2
                                       ^-- SC2154: confsdir is referenced but not assigned.


In modules/snapshot/files/cron/dump-machine-vision.sh line 81:
    if [ $1 == "--config" ]; then
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dump-machine-vision.sh line 84:
    elif [ $1 == "--dryrun" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dump-machine-vision.sh line 94:
results=`python3 "${repodir}/getconfigvals.py" --configfile "$configfile" --args "$args"`
        ^-- SC2006: Use $(..) instead of legacy `..`.
                  ^-- SC2154: repodir is referenced but not assigned.


In modules/snapshot/files/cron/dump-machine-vision.sh line 96:
multiversion=`getsetting "$results" "wiki" "multiversion"` || exit 1
             ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dump-machine-vision.sh line 97:
gzip=`getsetting "$results" "tools" "gzip"` || exit 1
     ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dump-machine-vision.sh line 98:
mysqldump=`getsetting "$results" "tools" "mysqldump"` || exit 1
          ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dump-machine-vision.sh line 99:
php=`getsetting "$results" "tools" "php"` || exit 1
    ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dump-machine-vision.sh line 105:
outputdir="${cronsdir}/machinevision"
           ^-- SC2154: cronsdir is referenced but not assigned.


In modules/snapshot/files/cron/dump-machine-vision.sh line 107:
host=`get_db_host "$multiversion"` || exit 1
     ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dump-machine-vision.sh line 109:
    IFS=: read host port <<< "$host"
    ^-- SC2162: read without -r will mangle backslashes.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 16:
projectName="wikidata"
^-- SC2034: projectName appears unused. Verify use (or export if used externally).


In modules/snapshot/files/cron/dumpwikidatajson.sh line 17:
. /usr/local/bin/wikibasedumps-shared.sh
^-- SC1091: Not following: /usr/local/bin/wikibasedumps-shared.sh was not specified as input (see shellcheck -x).


In modules/snapshot/files/cron/dumpwikidatajson.sh line 20:
	echo -e "Usage: $0 [--continue]\n"
                                       ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/snapshot/files/cron/dumpwikidatajson.sh line 21:
	echo -e "\t--continue\tAttempt to continue a previous dump run."
                 ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".
                             ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".


In modules/snapshot/files/cron/dumpwikidatajson.sh line 32:
	rm -f $tempDir/wikidataJson.*-batch*.gz
              ^-- SC2154: tempDir is referenced but not assigned.
              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 35:
filename=wikidata-$today-all
                  ^-- SC2154: today is referenced but not assigned.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 36:
targetFileGzip=$targetDir/$filename.json.gz
               ^-- SC2154: targetDir is referenced but not assigned.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 47:
numberOfBatchesNeeded=$(($numberOfBatchesNeeded / $shards))
                         ^-- SC2004: $/${} is unnecessary on arithmetic variables.
                                                  ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 48:
function returnWithCode { return $1; }
                                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 65:
			echo "(`date --iso-8601=minutes`) Starting batch $batch" >> $errorLog
                               ^-- SC2006: Use $(..) instead of legacy `..`.
                                                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 69:
			( $php $multiversionscript extensions/Wikibase/repo/maintenance/dumpJson.php \
                          ^-- SC2154: php is referenced but not assigned.
                               ^-- SC2154: multiversionscript is referenced but not assigned.
                               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 73:
				--batch-size $(($shards * 250)) \
                                                ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 78:
				$firstPageIdParam \
                                ^-- SC2154: firstPageIdParam is referenced but not assigned.
                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 79:
				$lastPageIdParam; \
                                ^-- SC2154: lastPageIdParam is referenced but not assigned.
                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 81:
				[ $lastRun -eq 0 ] && echo ','; \
                                  ^-- SC2154: lastRun is referenced but not assigned.
                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 83:
				2>> $errorLog | gzip -9 > $tempDir/wikidataJson.$i-batch$batch.gz
                                    ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                          ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 91:
			retries=0
                        ^-- SC2034: retries appears unused. Verify use (or export if used externally).


In modules/snapshot/files/cron/dumpwikidatajson.sh line 92:
			let batch++
                        ^-- SC2219: Instead of 'let expr', prefer (( expr )) .


In modules/snapshot/files/cron/dumpwikidatajson.sh line 95:
	let i++
        ^-- SC2219: Instead of 'let expr', prefer (( expr )) .


In modules/snapshot/files/cron/dumpwikidatajson.sh line 101:
	echo -e "\n\n(`date --iso-8601=minutes`) Giving up after a shard failed." >> $mainLogFile
                 ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                   ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                      ^-- SC2006: Use $(..) instead of legacy `..`.
                                                                                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 108:
echo '[' | gzip -f > $tempDir/wikidataJson.gz
                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 113:
	getFileSize "$tempFiles"
                     ^-- SC2154: tempFiles is referenced but not assigned.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 114:
	if [ $fileSize -lt `expr 58000000000 / $shards` ]; then
             ^-- SC2154: fileSize is referenced but not assigned.
             ^-- SC2086: Double quote to prevent globbing and word splitting.
                           ^-- SC2046: Quote this to prevent word splitting.
                           ^-- SC2006: Use $(..) instead of legacy `..`.
                            ^-- SC2003: expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]].


In modules/snapshot/files/cron/dumpwikidatajson.sh line 115:
		echo "File size for shard $i is only $fileSize. Aborting." >> $mainLogFile
                                                                              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 118:
	cat $tempFiles >> $tempDir/wikidataJson.gz
            ^-- SC2086: Double quote to prevent globbing and word splitting.
                          ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 119:
	rm -f $tempFiles
              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 120:
	let i++
        ^-- SC2219: Instead of 'let expr', prefer (( expr )) .


In modules/snapshot/files/cron/dumpwikidatajson.sh line 123:
		echo ',' | gzip -f >> $tempDir/wikidataJson.gz
                                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 128:
echo -e '\n]' | gzip -f >> $tempDir/wikidataJson.gz
                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 130:
mv $tempDir/wikidataJson.gz $targetFileGzip
   ^-- SC2086: Double quote to prevent globbing and word splitting.
                            ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 131:
putDumpChecksums $targetFileGzip
                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 134:
legacyDirectory=${cronsdir}/wikidata
                ^-- SC2154: cronsdir is referenced but not assigned.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 136:
find $legacyDirectory -name '*.json.gz' -mtime +`expr $daysToKeep + 1` -delete
     ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                ^-- SC2046: Quote this to prevent word splitting.
                                                ^-- SC2006: Use $(..) instead of legacy `..`.
                                                 ^-- SC2003: expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]].
                                                      ^-- SC2154: daysToKeep is referenced but not assigned.
                                                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 139:
ln -fs "$today/$filename.json.gz" "$targetDirBase/latest-all.json.gz"
                                   ^-- SC2154: targetDirBase is referenced but not assigned.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 142:
nthreads=$(( $shards / 2))
             ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 146:
gzip -dc $targetFileGzip | "$lbzip2" -n $nthreads -c > $tempDir/wikidataJson.bz2
         ^-- SC2086: Double quote to prevent globbing and word splitting.
                            ^-- SC2154: lbzip2 is referenced but not assigned.
                                                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 147:
mv $tempDir/wikidataJson.bz2 $targetFileBzip2
   ^-- SC2086: Double quote to prevent globbing and word splitting.
                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpwikidatajson.sh line 149:
putDumpChecksums $targetFileBzip2
                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 10:
source /usr/local/etc/dump_functions.sh
^-- SC1091: Not following: /usr/local/etc/dump_functions.sh was not specified as input (see shellcheck -x).


In modules/snapshot/files/cron/dumpcirrussearch.sh line 16:
	echo "            (default value: ${confsdir}/wikidump.conf.other"
                                          ^-- SC2154: confsdir is referenced but not assigned.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 25:
	if [ $1 == "--config" ]; then
             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 28:
	elif [ $1 == "--dryrun" ]; then
               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 44:
results=`python3 "${repodir}/getconfigvals.py" --configfile "$configFile" --args "$args"`
        ^-- SC2006: Use $(..) instead of legacy `..`.
                  ^-- SC2154: repodir is referenced but not assigned.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 46:
allList=`getsetting "$results" "wiki" "dblist"` || exit 1
        ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 47:
privateList=`getsetting "$results" "wiki" "privatelist"` || exit 1
            ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 48:
multiversion=`getsetting "$results" "wiki" "multiversion"` || exit 1
             ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 49:
gzip=`getsetting "$results" "tools" "gzip"` || exit 1
     ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 50:
php=`getsetting "$results" "tools" "php"` || exit 1
    ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 57:
targetDirBase="${cronsdir}/cirrussearch"
               ^-- SC2154: cronsdir is referenced but not assigned.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 73:
cat $allList | while read wiki; do
    ^-- SC2086: Double quote to prevent globbing and word splitting.
    ^-- SC2002: Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead.
                     ^-- SC2162: read without -r will mangle backslashes.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 75:
	if ! egrep -q "^$wiki$" $privateList; then
             ^-- SC2196: egrep is non-standard and deprecated. Use grep -E instead.
                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 89:
				$php $multiVersionScript \
                                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 91:
					--wiki=$wiki \
                                               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 92:
					--indexType=$type \
                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 93:
					2> /var/log/cirrusdump/cirrusdump-$filename.log \
                                                                          ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 94:
					| $gzip > ${targetFile}.tmp
                                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 95:
				mv ${targetFile}.tmp $targetFile
                                   ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 112:
		$php $multiVersionScript \
                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 116:
			--cluster=$cluster \
                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 117:
			2>> /var/log/cirrusdump/cirrusdump-$filename.log \
                                                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 118:
			| $gzip > ${targetFile}.tmp
                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 119:
		mv ${targetFile}.tmp $targetFile
                   ^-- SC2086: Double quote to prevent globbing and word splitting.
                                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcirrussearch.sh line 127:
	cd "$targetDirBase"
        ^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.


In modules/snapshot/files/cron/dumpcategoriesrdf.sh line 10:
. /usr/local/bin/dumpcategoriesrdf-shared.sh
^-- SC1091: Not following: /usr/local/bin/dumpcategoriesrdf-shared.sh was not specified as input (see shellcheck -x).


In modules/snapshot/files/cron/dumpcategoriesrdf.sh line 12:
targetDirBase="${categoriesDirBase}"
               ^-- SC2154: categoriesDirBase is referenced but not assigned.


In modules/snapshot/files/cron/dumpcategoriesrdf.sh line 14:
targetDir="${targetDirBase}/${today}"
                            ^-- SC2154: today is referenced but not assigned.


In modules/snapshot/files/cron/dumpcategoriesrdf.sh line 21:
cat "$dbList" | while read wiki; do
    ^-- SC2002: Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead.
     ^-- SC2154: dbList is referenced but not assigned.
                      ^-- SC2162: read without -r will mangle backslashes.


In modules/snapshot/files/cron/dumpcategoriesrdf.sh line 23:
	if ! egrep -q "^${wiki}$" "$privateList"; then
             ^-- SC2196: egrep is non-standard and deprecated. Use grep -E instead.
                                   ^-- SC2154: privateList is referenced but not assigned.


In modules/snapshot/files/cron/dumpcategoriesrdf.sh line 27:
		if [ "$dryrun" == "true" ]; then
                      ^-- SC2154: dryrun is referenced but not assigned.


In modules/snapshot/files/cron/dumpcategoriesrdf.sh line 28:
			echo "$php $multiVersionScript maintenance/dumpCategoriesAsRdf.php --wiki=$wiki --format=$dumpFormat 2> /var/log/categoriesrdf/${filename}.log | $gzip > $targetFile"
                              ^-- SC2154: php is referenced but not assigned.
                                   ^-- SC2154: multiVersionScript is referenced but not assigned.
                                                                                                                                                                         ^-- SC2154: gzip is referenced but not assigned.


In modules/snapshot/files/cron/dumpcategoriesrdf.sh line 29:
			echo "Timestamp: $ts > $tsFile"
                                         ^-- SC2154: ts is referenced but not assigned.


In modules/snapshot/files/cron/dumpcategoriesrdf-shared.sh line 9:
source /usr/local/etc/dump_functions.sh
^-- SC1091: Not following: /usr/local/etc/dump_functions.sh was not specified as input (see shellcheck -x).


In modules/snapshot/files/cron/dumpcategoriesrdf-shared.sh line 11:
configFile="${confsdir}/wikidump.conf.other"
            ^-- SC2154: confsdir is referenced but not assigned.


In modules/snapshot/files/cron/dumpcategoriesrdf-shared.sh line 28:
		echo mkdir -p "$targetDir"
                               ^-- SC2154: targetDir is referenced but not assigned.


In modules/snapshot/files/cron/dumpcategoriesrdf-shared.sh line 29:
		echo mkdir -p "$timestampsDir"
                               ^-- SC2154: timestampsDir is referenced but not assigned.


In modules/snapshot/files/cron/dumpcategoriesrdf-shared.sh line 47:
		cd "$targetDirBase"
                ^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
                    ^-- SC2154: targetDirBase is referenced but not assigned.


In modules/snapshot/files/cron/dumpcategoriesrdf-shared.sh line 53:
	if [ $1 == "--config" ]; then
             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcategoriesrdf-shared.sh line 56:
	elif [ $1 == "--dryrun" ]; then
               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcategoriesrdf-shared.sh line 59:
	elif [ $1 == "--list" ]; then
               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcategoriesrdf-shared.sh line 68:
if [ -z "$dbList" -o ! -f "$dbList" ]; then
                  ^-- SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined.


In modules/snapshot/files/cron/dumpcategoriesrdf-shared.sh line 81:
results=`python3 "${repodir}/getconfigvals.py" --configfile "$configFile" --args "$args"`
        ^-- SC2006: Use $(..) instead of legacy `..`.
                  ^-- SC2154: repodir is referenced but not assigned.


In modules/snapshot/files/cron/dumpcategoriesrdf-shared.sh line 83:
privateList=`getsetting "$results" "wiki" "privatelist"` || exit 1
^-- SC2034: privateList appears unused. Verify use (or export if used externally).
            ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dumpcategoriesrdf-shared.sh line 84:
multiversion=`getsetting "$results" "wiki" "multiversion"` || exit 1
             ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dumpcategoriesrdf-shared.sh line 85:
gzip=`getsetting "$results" "tools" "gzip"` || exit 1
^-- SC2034: gzip appears unused. Verify use (or export if used externally).
     ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dumpcategoriesrdf-shared.sh line 86:
php=`getsetting "$results" "tools" "php"` || exit 1
^-- SC2034: php appears unused. Verify use (or export if used externally).
    ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dumpcategoriesrdf-shared.sh line 93:
ts=$(date -u +'%Y%m%d%H%M%S')
^-- SC2034: ts appears unused. Verify use (or export if used externally).


In modules/snapshot/files/cron/dumpcategoriesrdf-shared.sh line 94:
multiVersionScript="${multiversion}/MWScript.php"
^-- SC2034: multiVersionScript appears unused. Verify use (or export if used externally).


In modules/snapshot/files/cron/dumpcategoriesrdf-shared.sh line 95:
categoriesDirBase="${cronsdir}/categoriesrdf"
^-- SC2034: categoriesDirBase appears unused. Verify use (or export if used externally).
                   ^-- SC2154: cronsdir is referenced but not assigned.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 12:
source /usr/local/etc/dump_functions.sh
^-- SC1091: Not following: /usr/local/etc/dump_functions.sh was not specified as input (see shellcheck -x).


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 13:
configfile="${confsdir}/wikidump.conf.other"
            ^-- SC2154: confsdir is referenced but not assigned.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 15:
today=`date +'%Y%m%d'`
      ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 16:
daysToKeep=70
^-- SC2034: daysToKeep appears unused. Verify use (or export if used externally).


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 20:
results=`python3 "${repodir}/getconfigvals.py" --configfile "$configfile" --args "$args"`
        ^-- SC2006: Use $(..) instead of legacy `..`.
                  ^-- SC2154: repodir is referenced but not assigned.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 22:
multiversion=`getsetting "$results" "wiki" "multiversion"` || exit 1
             ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 23:
tempDir=`getsetting "$results" "output" "temp"` || exit 1
        ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 24:
php=`getsetting "$results" "tools" "php"` || exit 1
    ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 25:
lbzip2=`getsetting "$results" "tools" "lbzip2"` || exit 1
^-- SC2034: lbzip2 appears unused. Verify use (or export if used externally).
       ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 31:
targetDirBase=${cronsdir}/wikibase/${projectName}wiki
              ^-- SC2154: cronsdir is referenced but not assigned.
                                   ^-- SC2154: projectName is referenced but not assigned.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 37:
mkdir -p $targetDir
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 41:
	find /var/log/${projectName}dump/ -name "dump${projectName}"'*-*-*.log' -mtime +36 -delete
                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 45:
	if [[ -n "$dcatConfig" ]]; then
                  ^-- SC2154: dcatConfig is referenced but not assigned.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 46:
		$php /usr/local/share/dcat/DCAT.php --config=$dcatConfig --dumpDir=$targetDirBase --outputDir=$targetDirBase
                                                             ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 52:
	md5=`md5sum "$1" | awk '{print $1}'`
            ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 53:
	echo "$md5  `basename $1`" >> $targetDir/${projectName}-$today-md5sums.txt
                    ^-- SC2006: Use $(..) instead of legacy `..`.
                              ^-- SC2086: Double quote to prevent globbing and word splitting.
                                      ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                 ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 55:
	sha1=`sha1sum "$1" | awk '{print $1}'`
             ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 56:
	echo "$sha1  `basename $1`" >> $targetDir/${projectName}-$today-sha1sums.txt
                     ^-- SC2006: Use $(..) instead of legacy `..`.
                               ^-- SC2086: Double quote to prevent globbing and word splitting.
                                       ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                  ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 61:
	maxPageId="$($php $multiversionscript mysql.php --wiki ${projectName}wiki --group=dump -- --silent --skip-column-names -e 'SELECT MAX(page_id) AS max_page_id FROM page')"
                          ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 63:
	if [ "$?" -ne 0 ] || ! echo "$maxPageId" | grep -qPv '[^\d]' || [ "$maxPageId" -lt 1 ]; then
             ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 69:
	numberOfBatchesNeeded=$(($maxPageId / $pagesPerBatch))
                                 ^-- SC2004: $/${} is unnecessary on arithmetic variables.
                                              ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 74:
	firstPageIdParam="--first-page-id "$(( $batch * $pagesPerBatch * $shards + 1))
        ^-- SC2034: firstPageIdParam appears unused. Verify use (or export if used externally).
                                               ^-- SC2004: $/${} is unnecessary on arithmetic variables.
                                                        ^-- SC2004: $/${} is unnecessary on arithmetic variables.
                                                                         ^-- SC2154: shards is referenced but not assigned.
                                                                         ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 75:
	lastPageIdParam="--last-page-id "$(( ( $batch + 1 ) * $pagesPerBatch * $shards))
                                               ^-- SC2004: $/${} is unnecessary on arithmetic variables.
                                                              ^-- SC2004: $/${} is unnecessary on arithmetic variables.
                                                                               ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 78:
	if [ $(($batch + 1)) -eq $numberOfBatchesNeeded ]; then
                ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 80:
		lastPageIdParam=""
                ^-- SC2034: lastPageIdParam appears unused. Verify use (or export if used externally).


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 81:
		lastRun=1
                ^-- SC2034: lastRun appears unused. Verify use (or export if used externally).


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 88:
	tempFiles=`ls -1 $1 2>/dev/null | sort -V | paste -s -d ' '`
                  ^-- SC2006: Use $(..) instead of legacy `..`.
                   ^-- SC2012: Use find instead of ls to better handle non-alphanumeric filenames.
                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 93:
	fileSize=`du -b -c $1 | awk '/total$/ { print $1 }'`
        ^-- SC2034: fileSize appears unused. Verify use (or export if used externally).
                 ^-- SC2006: Use $(..) instead of legacy `..`.
                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 98:
	echo -e "\n\n(`date --iso-8601=minutes`) Process for batch $batch of shard $i failed with exit code $exitCode" >> $errorLog
                 ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                   ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                      ^-- SC2006: Use $(..) instead of legacy `..`.
                                                                                   ^-- SC2154: i is referenced but not assigned.
                                                                                                            ^-- SC2154: exitCode is referenced but not assigned.
                                                                                                                          ^-- SC2154: errorLog is referenced but not assigned.
                                                                                                                          ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 100:
	let retries++
        ^-- SC2219: Instead of 'let expr', prefer (( expr )) .


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 104:
		echo -e "\n\n(`date --iso-8601=minutes`) Giving up after $(($retries - 1)) retries." >> $errorLog
                         ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                           ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                              ^-- SC2006: Use $(..) instead of legacy `..`.
                                                                            ^-- SC2004: $/${} is unnecessary on arithmetic variables.
                                                                                                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 105:
		echo 1 > $failureFile
                         ^-- SC2154: failureFile is referenced but not assigned.
                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 110:
	sleep $((900 * $retries))
                       ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In modules/snapshot/files/cron/wikibase/wikibasedumps-shared.sh line 117:
		batch=`echo $tempFiles | awk '{ print $(NF) }' | sed -r 's/.*batch([0-9]+).gz/\1/'`
                      ^-- SC2006: Use $(..) instead of legacy `..`.
                            ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/wikidatardf_functions.sh line 9:
    echo -e "Usage: $0 wikidata [--continue] all|truthy|lexemes ttl|nt [nt|ttl]\n"
                                                                               ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/snapshot/files/cron/wikibase/wikidatardf_functions.sh line 10:
    echo -e "\t--continue\tAttempt to continue a previous dump run."
             ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".
                         ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".


In modules/snapshot/files/cron/wikibase/wikidatardf_functions.sh line 11:
    echo -e "\tall|truthy|lexemes\tType of dump to produce."
             ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".
                                 ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".


In modules/snapshot/files/cron/wikibase/wikidatardf_functions.sh line 12:
    echo -e "\tttl|nt\t\tOutput format."
             ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".
                     ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".
                       ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".


In modules/snapshot/files/cron/wikibase/wikidatardf_functions.sh line 13:
    echo -e "\t[nt|ttl]\t\tOutput format for extra dump, converted from above (optional)."
             ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".
                       ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".
                         ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".


In modules/snapshot/files/cron/wikibase/wikidatardf_functions.sh line 19:
    projectName="wikidata"
    ^-- SC2034: projectName appears unused. Verify use (or export if used externally).


In modules/snapshot/files/cron/wikibase/wikidatardf_functions.sh line 23:
    if [[ "$dumpName" == "lexemes" ]]; then
           ^-- SC2154: dumpName is referenced but not assigned.


In modules/snapshot/files/cron/wikibase/wikidatardf_functions.sh line 26:
	entityTypes="--entity-type item --entity-type property"
        ^-- SC2034: entityTypes appears unused. Verify use (or export if used externally).


In modules/snapshot/files/cron/wikibase/wikidatardf_functions.sh line 42:
    filename=wikidata-$today-$dumpName-BETA
    ^-- SC2034: filename appears unused. Verify use (or export if used externally).
                      ^-- SC2154: today is referenced but not assigned.


In modules/snapshot/files/cron/wikibase/wikidatardf_functions.sh line 46:
    dumpNameToMinSize=(["all"]=`expr 56000000000 / $shards` ["truthy"]=`expr 30000000000 / $shards` ["lexemes"]=`expr 9000000 / $shards`)
    ^-- SC2034: dumpNameToMinSize appears unused. Verify use (or export if used externally).
                               ^-- SC2006: Use $(..) instead of legacy `..`.
                                ^-- SC2003: expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]].
                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                       ^-- SC2006: Use $(..) instead of legacy `..`.
                                                                        ^-- SC2003: expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]].
                                                                                           ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                                ^-- SC2006: Use $(..) instead of legacy `..`.
                                                                                                                 ^-- SC2003: expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]].
                                                                                                                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/wikidatardf_functions.sh line 50:
    dcatConfig="/usr/local/etc/dcat_wikidata_config.json"
    ^-- SC2034: dcatConfig appears unused. Verify use (or export if used externally).


In modules/snapshot/files/cron/wikibase/commonsrdf_functions.sh line 9:
    echo -e "Usage: $0 commons [--continue] mediainfo ttl|nt [nt|ttl]\n"
                                                                     ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/snapshot/files/cron/wikibase/commonsrdf_functions.sh line 10:
    echo -e "\t--continue\tAttempt to continue a previous dump run."
             ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".
                         ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".


In modules/snapshot/files/cron/wikibase/commonsrdf_functions.sh line 11:
    echo -e "\tttl|nt\t\tOutput format."
             ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".
                     ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".
                       ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".


In modules/snapshot/files/cron/wikibase/commonsrdf_functions.sh line 12:
    echo -e "\t[nt|ttl]\t\tOutput format for extra dump, converted from above (optional)."
             ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".
                       ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".
                         ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".


In modules/snapshot/files/cron/wikibase/commonsrdf_functions.sh line 18:
    projectName="commons"
    ^-- SC2034: projectName appears unused. Verify use (or export if used externally).


In modules/snapshot/files/cron/wikibase/commonsrdf_functions.sh line 22:
	entityTypes="--entity-type mediainfo --ignore-missing"
        ^-- SC2034: entityTypes appears unused. Verify use (or export if used externally).


In modules/snapshot/files/cron/wikibase/commonsrdf_functions.sh line 26:
	dumpFlavor="full-dump"
        ^-- SC2034: dumpFlavor appears unused. Verify use (or export if used externally).


In modules/snapshot/files/cron/wikibase/commonsrdf_functions.sh line 30:
    filename=commons-$today-$dumpName
    ^-- SC2034: filename appears unused. Verify use (or export if used externally).
                     ^-- SC2154: today is referenced but not assigned.
                            ^-- SC2154: dumpName is referenced but not assigned.


In modules/snapshot/files/cron/wikibase/commonsrdf_functions.sh line 35:
    dumpNameToMinSize=(["mediainfo"]=1000)
    ^-- SC2034: dumpNameToMinSize appears unused. Verify use (or export if used externally).


In modules/snapshot/files/cron/wikibase/commonsrdf_functions.sh line 40:
    dcatConfig=""
    ^-- SC2034: dcatConfig appears unused. Verify use (or export if used externally).


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 30:
if [ "$projectName" != "wikidata" -a  "$projectName" != "commons" ]; then
                                  ^-- SC2166: Prefer [ p ] && [ q ] as [ p -a q ] is not well defined.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 36:
. /usr/local/bin/wikibasedumps-shared.sh
^-- SC1091: Not following: /usr/local/bin/wikibasedumps-shared.sh was not specified as input (see shellcheck -x).


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 37:
. /usr/local/bin/${projectName}rdf_functions.sh
^-- SC1090: Can't follow non-constant source. Use a directive to specify location.
                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 59:
	rm -f $tempDir/$projectName$dumpFormat-$dumpName.*-batch*.gz
              ^-- SC2154: tempDir is referenced but not assigned.
              ^-- SC2086: Double quote to prevent globbing and word splitting.
                       ^-- SC2086: Double quote to prevent globbing and word splitting.
                                   ^-- SC2086: Double quote to prevent globbing and word splitting.
                                               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 78:
	if [ -z "$extraIn" -o -z "$extraOut" -o "$extraIn" = "$extraOut" ]; then
                           ^-- SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined.
                                             ^-- SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 87:
mainLogFile="${logLocation}/dump${projectName}${dumpFormat}-${filename}-main.log"
                                                            ^-- SC2154: filename is referenced but not assigned.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 92:
rm -f $failureFile
      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 96:
getNumberOfBatchesNeeded ${projectName}wiki
                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 97:
numberOfBatchesNeeded=$(($numberOfBatchesNeeded / $shards))
                         ^-- SC2004: $/${} is unnecessary on arithmetic variables.
                                                  ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 104:
	pagesPerBatch=$(( $maxPageId / $shards ))
        ^-- SC2034: pagesPerBatch appears unused. Verify use (or export if used externally).
                          ^-- SC2154: maxPageId is referenced but not assigned.
                          ^-- SC2004: $/${} is unnecessary on arithmetic variables.
                                       ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 112:
		errorLog=${logLocation}/dump$projectName$dumpFormat-$filename-$i.log
                ^-- SC2030: Modification of errorLog is local (to subshell caused by (..) group).


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 121:
		while [ $batch -lt $numberOfBatchesNeeded ] && [ ! -f $failureFile ]; do
                                                                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 124:
			echo "(`date --iso-8601=minutes`) Starting batch $batch" >> $errorLog
                               ^-- SC2006: Use $(..) instead of legacy `..`.
                                                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 125:
			$php $multiversionscript extensions/Wikibase/repo/maintenance/dumpRdf.php \
                        ^-- SC2154: php is referenced but not assigned.
                             ^-- SC2154: multiversionscript is referenced but not assigned.
                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 126:
				--wiki ${projectName}wiki \
                                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 129:
				--batch-size $(($shards * 250)) \
                                                ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 130:
				--format $dumpFormat ${dumpFlavor:+--flavor} ${dumpFlavor:+"$dumpFlavor"} \
                                         ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                     ^-- SC2154: dumpFlavor is referenced but not assigned.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 131:
				$entityTypes \
                                ^-- SC2154: entityTypes is referenced but not assigned.
                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 134:
				$firstPageIdParam \
                                ^-- SC2154: firstPageIdParam is referenced but not assigned.
                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 135:
				$lastPageIdParam 2>> $errorLog | gzip -9 > $tempDir/$projectName$dumpFormat-$dumpName.$i-batch$batch.gz
                                ^-- SC2154: lastPageIdParam is referenced but not assigned.
                                ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                     ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                           ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                            ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 143:
			retries=0
                        ^-- SC2034: retries appears unused. Verify use (or export if used externally).


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 144:
			let batch++
                        ^-- SC2219: Instead of 'let expr', prefer (( expr )) .


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 147:
	let i++
        ^-- SC2219: Instead of 'let expr', prefer (( expr )) .


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 152:
if [ -f $failureFile ]; then
        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 153:
	echo -e "\n\n(`date --iso-8601=minutes`) Giving up after a shard failed." >> $mainLogFile
                 ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                   ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                      ^-- SC2006: Use $(..) instead of legacy `..`.
                                                                                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 154:
	rm -f $failureFile
              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 162:
	if [ -z "$tempFiles" ]; then
                 ^-- SC2154: tempFiles is referenced but not assigned (did you mean 'tempFile'?).


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 163:
		echo "No files for shard $i!" >> $mainLogFile
                                                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 167:
	if [ $fileSize -lt ${dumpNameToMinSize[$dumpName]} ]; then
             ^-- SC2154: fileSize is referenced but not assigned.
             ^-- SC2086: Double quote to prevent globbing and word splitting.
                           ^-- SC2154: dumpNameToMinSize is referenced but not assigned.
                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 168:
		echo "File size of $tempFile is only $fileSize. Aborting." >> $mainLogFile
                                                                              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 171:
	cat $tempFiles >> $tempDir/$projectName$dumpFormat-$dumpName.gz
            ^-- SC2086: Double quote to prevent globbing and word splitting.
                          ^-- SC2086: Double quote to prevent globbing and word splitting.
                                   ^-- SC2086: Double quote to prevent globbing and word splitting.
                                               ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 172:
	let i++
        ^-- SC2219: Instead of 'let expr', prefer (( expr )) .


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 184:
				gzip -dc $tempFile | serdi -i $extraIn -o $extraOut -b -q - | gzip -9 > $extraFile
                                         ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                              ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                          ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 187:
					echo -e "\n\n(`date --iso-8601=minutes`) Converting $tempFile failed with exit code $exitCode" >> $errorLog
                                                 ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                   ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                      ^-- SC2006: Use $(..) instead of legacy `..`.
                                                                                                                                          ^-- SC2031: errorLog was modified in a subshell. That change might be lost.
                                                                                                                                          ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 191:
		let i++
                ^-- SC2219: Instead of 'let expr', prefer (( expr )) .


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 199:
	rm -f $tempFiles
              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 202:
		cat $tempFiles >> $tempDir/$projectName$extraFormat-$dumpName.gz
                    ^-- SC2086: Double quote to prevent globbing and word splitting.
                                  ^-- SC2086: Double quote to prevent globbing and word splitting.
                                           ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 203:
		rm -f $tempFiles
                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 205:
	let i++
        ^-- SC2219: Instead of 'let expr', prefer (( expr )) .


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 208:
nthreads=$(( $shards / 2))
             ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 213:
moveLinkFile $projectName$dumpFormat-$dumpName.gz $filename.$dumpFormat.gz latest-$dumpName.$dumpFormat.gz $projectName
             ^-- SC2086: Double quote to prevent globbing and word splitting.
                         ^-- SC2086: Double quote to prevent globbing and word splitting.
                                     ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                  ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                            ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                  ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                            ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 214:
gzip -dc "$targetDir/$filename.$dumpFormat.gz" | "$lbzip2" -n $nthreads -c > $tempDir/$projectName$dumpFormat-$dumpName.bz2
          ^-- SC2154: targetDir is referenced but not assigned.
                                                  ^-- SC2154: lbzip2 is referenced but not assigned.
                                                                             ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                      ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                  ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 215:
moveLinkFile $projectName$dumpFormat-$dumpName.bz2 $filename.$dumpFormat.bz2 latest-$dumpName.$dumpFormat.bz2 $projectName
             ^-- SC2086: Double quote to prevent globbing and word splitting.
                         ^-- SC2086: Double quote to prevent globbing and word splitting.
                                     ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                   ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                             ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                    ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                              ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 218:
	moveLinkFile $projectName$extraFormat-$dumpName.gz $filename.$extraFormat.gz latest-$dumpName.$extraFormat.gz $projectName
                     ^-- SC2086: Double quote to prevent globbing and word splitting.
                                              ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                           ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                            ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 219:
	gzip -dc "$targetDir/$filename.$extraFormat.gz" | "$lbzip2" -n $nthreads -c > $tempDir/$projectName$extraFormat-$dumpName.bz2
                                                                                      ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                               ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/wikibase/dumpwikibaserdf.sh line 220:
	moveLinkFile $projectName$extraFormat-$dumpName.bz2 $filename.$extraFormat.bz2 latest-$dumpName.$extraFormat.bz2 $projectName
                     ^-- SC2086: Double quote to prevent globbing and word splitting.
                                              ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                            ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                              ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                                         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcategoriesrdf-daily.sh line 11:
. /usr/local/bin/dumpcategoriesrdf-shared.sh
^-- SC1091: Not following: /usr/local/bin/dumpcategoriesrdf-shared.sh was not specified as input (see shellcheck -x).


In modules/snapshot/files/cron/dumpcategoriesrdf-daily.sh line 13:
targetDirBase="${categoriesDirBase}/daily"
               ^-- SC2154: categoriesDirBase is referenced but not assigned.


In modules/snapshot/files/cron/dumpcategoriesrdf-daily.sh line 16:
targetDir="${targetDirBase}/${today}"
                            ^-- SC2154: today is referenced but not assigned.


In modules/snapshot/files/cron/dumpcategoriesrdf-daily.sh line 22:
cat "$dbList" | while read wiki; do
    ^-- SC2002: Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead.
     ^-- SC2154: dbList is referenced but not assigned.
                      ^-- SC2162: read without -r will mangle backslashes.


In modules/snapshot/files/cron/dumpcategoriesrdf-daily.sh line 24:
	if ! egrep -q "^${wiki}$" "$privateList"; then
             ^-- SC2196: egrep is non-standard and deprecated. Use grep -E instead.
                                   ^-- SC2154: privateList is referenced but not assigned.


In modules/snapshot/files/cron/dumpcategoriesrdf-daily.sh line 31:
			fullTs=`cat $fullTsFile`
                               ^-- SC2006: Use $(..) instead of legacy `..`.
                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcategoriesrdf-daily.sh line 38:
			lastTs=`cat $tsFile`
                               ^-- SC2006: Use $(..) instead of legacy `..`.
                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcategoriesrdf-daily.sh line 47:
			if [ "$dryrun" == "true" ]; then
                              ^-- SC2154: dryrun is referenced but not assigned.


In modules/snapshot/files/cron/dumpcategoriesrdf-daily.sh line 49:
				echo "$php $multiVersionScript maintenance/categoryChangesAsRdf.php --wiki=$wiki -s $fullTs -e $ts 2> /var/log/categoriesrdf/${filename}-daily.log | $gzip > $fromTargetFile"
                                      ^-- SC2154: php is referenced but not assigned.
                                           ^-- SC2154: multiVersionScript is referenced but not assigned.
                                                                                                                               ^-- SC2154: ts is referenced but not assigned.
                                                                                                                                                                                     ^-- SC2154: gzip is referenced but not assigned.


In modules/snapshot/files/cron/dumpcategoriesrdf-daily.sh line 51:
				$php "$multiVersionScript" maintenance/categoryChangesAsRdf.php --wiki="$wiki" -s $fullTs -e $ts 2> "/var/log/categoriesrdf/${filename}-daily.log" | "$gzip" > "$fromTargetFile"
                                                                                                                  ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcategoriesrdf-daily.sh line 59:
			$php "$multiVersionScript" maintenance/categoryChangesAsRdf.php --wiki="$wiki" -s $lastTs -e $ts 2>> "/var/log/categoriesrdf/${filename}-daily.log" | "$gzip" > "$targetFile"
                                                                                                          ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcontentxlation.sh line 7:
source /usr/local/etc/dump_functions.sh
^-- SC1091: Not following: /usr/local/etc/dump_functions.sh was not specified as input (see shellcheck -x).


In modules/snapshot/files/cron/dumpcontentxlation.sh line 19:
        echo $command
             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcontentxlation.sh line 29:
    echo "             (default value: ${confsdir}/wikidump.conf.other"
                                       ^-- SC2154: confsdir is referenced but not assigned.


In modules/snapshot/files/cron/dumpcontentxlation.sh line 46:
    if [ $1 == "--config" ]; then
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcontentxlation.sh line 49:
    elif [ $1 == "--dryrun" ]; then
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/snapshot/files/cron/dumpcontentxlation.sh line 63:
results=`python3 "${repodir}/getconfigvals.py" --configfile "$configfile" --args "$args"`
        ^-- SC2006: Use $(..) instead of legacy `..`.
                  ^-- SC2154: repodir is referenced but not assigned.


In modules/snapshot/files/cron/dumpcontentxlation.sh line 65:
multiversion=`getsetting "$results" "wiki" "multiversion"` || exit 1
             ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dumpcontentxlation.sh line 66:
php=`getsetting "$results" "tools" "php"` || exit 1
    ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dumpcontentxlation.sh line 76:
today=`date +%Y%m%d`
      ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/dumpcontentxlation.sh line 77:
xlationdir="${cronsdir}/contenttranslation"
            ^-- SC2154: cronsdir is referenced but not assigned.


In modules/snapshot/files/cron/create-media-per-project-lists.sh line 8:
source /usr/local/etc/set_dump_dirs.sh
^-- SC1091: Not following: /usr/local/etc/set_dump_dirs.sh was not specified as input (see shellcheck -x).


In modules/snapshot/files/cron/create-media-per-project-lists.sh line 10:
DATE=`/bin/date '+%Y%m%d'`
     ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/create-media-per-project-lists.sh line 11:
outputdir="${cronsdir}/imageinfo/$DATE"
           ^-- SC2154: cronsdir is referenced but not assigned.


In modules/snapshot/files/cron/create-media-per-project-lists.sh line 12:
configfile="${confsdir}/wikidump.conf.dumps:media"
            ^-- SC2154: confsdir is referenced but not assigned.


In modules/snapshot/files/cron/create-media-per-project-lists.sh line 15:
cd "$repodir"
^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
    ^-- SC2154: repodir is referenced but not assigned.


In modules/snapshot/files/cron/create-media-per-project-lists.sh line 21:
if [ $? -ne 0 ]; then
     ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.


In modules/snapshot/files/cron/create-media-per-project-lists.sh line 27:
globalusagelist="${dblistsdir}/globalusage.dblist"
                 ^-- SC2154: dblistsdir is referenced but not assigned.


In modules/snapshot/files/cron/create-media-per-project-lists.sh line 28:
basewiki=`cat "$globalusagelist"`
         ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/snapshot/files/cron/create-media-per-project-lists.sh line 36:
if [ $? -ne 0 ]; then
     ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.


In modules/snapshot/files/cron/dump_functions.sh line 9:
source /usr/local/etc/set_dump_dirs.sh
^-- SC1091: Not following: /usr/local/etc/set_dump_dirs.sh was not specified as input (see shellcheck -x).


In modules/snapshot/files/cron/dump_functions.sh line 14:
    if [ -z "$value" -o "$value" == "null" ]; then
                     ^-- SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined.


In modules/snapshot/files/cron/dump_functions.sh line 15:
        echo "failed to retrieve value of $setting from $configfile" >& 2
                                                        ^-- SC2154: configfile is referenced but not assigned.


In modules/prometheus/files/usr/local/bin/prometheus-nic-firmware.sh line 38:
    driver="$(basename $(readlink $dev_driverlink))"
                       ^-- SC2046: Quote this to prevent word splitting.
                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/prometheus/files/usr/local/bin/prometheus-local-crontabs.sh line 29:
mapfile -t ALLOWED_CRONTABS < <(echo ${CRONTABS[@]} ${ALLOWED[@]} | tr ' ' '\n' | sort | uniq -d)
                                     ^-- SC2068: Double quote array expansions to avoid re-splitting elements.
                                                    ^-- SC2068: Double quote array expansions to avoid re-splitting elements.


In modules/noc/files/fetch_dbconfig.sh line 18:
    dig _${SERVICE}._${PROTO} srv +short +ndots=2 +search | grep -ve '^$' | shuf -n1 | awk '{print $4 ":" $3}'
         ^-- SC2086: Double quote to prevent globbing and word splitting.
                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/noc/files/fetch_dbconfig.sh line 29:
    [ $? -eq 0 ] && mv $OUTPUT_PATH/.${DC}.json.tmp $OUTPUT_PATH/${DC}.json
      ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.


In modules/toil/files/acct.sh line 10:
LOGROTATE="/etc/cron.daily/logrotate"
^-- SC2034: LOGROTATE appears unused. Verify use (or export if used externally).


In modules/toil/files/acct.sh line 14:
	echo "Login accounting for the month ended `date`:" > /var/log/wtmp.report
                                                   ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/toil/files/acct.sh line 34:
			WTMP="`tempfile`"
                              ^-- SC2006: Use $(..) instead of legacy `..`.
                               ^-- SC2186: tempfile is deprecated. Use mktemp instead.


In modules/toil/files/acct.sh line 39:
		ac -f "${WTMP}" -p | sort -nr -k2 >> /var/log/wtmp.report
                                     ^-- SC2129: Consider using { cmd1; cmd2; } >> file instead of individual redirects.


In modules/toil/files/acct.sh line 49:
		ac -p | sort -nr -k2 >> /var/log/wtmp.report
                        ^-- SC2129: Consider using { cmd1; cmd2; } >> file instead of individual redirects.


In modules/openstack/files/wikitech/mw-xml.sh line 3:
cd /srv/mediawiki/php
^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.


In modules/openstack/files/wikitech/mw-xml.sh line 4:
/usr/local/bin/mwscript maintenance/dumpBackup.php labswiki --current --uploads | sed 's/<model>yaml<\/model>/<model>wikitext<\/model>/g' | sed 's/<format>application\/yaml<\/format>/<format>text\/x-wiki<\/format>/g' | nice -n 19 gzip -9 > /srv/backup/public/labswiki-$(date '+%Y%m%d').xml.gz
                                                                                                                                                                                                                                                                            ^-- SC2046: Quote this to prevent word splitting.


In modules/openstack/files/wikitech/mw-xml.sh line 5:
cd -
^-- SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
^-- SC2103: Use a ( subshell ) to avoid having to cd back.


In modules/openstack/files/util/novaenv.sh line 1:
# 'source novaenv.sh' will set these shell environment values
^-- SC2148: Tips depend on target shell and yours is unknown. Add a shebang.


In modules/openstack/files/util/novaenv.sh line 19:
    sed -ne "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" \
                ^-- SC1117: Backslash is literal in "\(". Prefer explicit escaping: "\\(".
                    ^-- SC1117: Backslash is literal in "\)". Prefer explicit escaping: "\\)".
                      ^-- SC1117: Backslash is literal in "\(". Prefer explicit escaping: "\\(".
                          ^-- SC1117: Backslash is literal in "\)". Prefer explicit escaping: "\\)".
                                   ^-- SC1117: Backslash is literal in "\(". Prefer explicit escaping: "\\(".
                                       ^-- SC1117: Backslash is literal in "\)". Prefer explicit escaping: "\\)".
                                                ^-- SC1117: Backslash is literal in "\1". Prefer explicit escaping: "\\1".
                                                     ^-- SC1117: Backslash is literal in "\2". Prefer explicit escaping: "\\2".
                                                          ^-- SC1117: Backslash is literal in "\3". Prefer explicit escaping: "\\3".


In modules/openstack/files/util/novaenv.sh line 20:
         -e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p"  $file |
                ^-- SC1117: Backslash is literal in "\(". Prefer explicit escaping: "\\(".
                    ^-- SC1117: Backslash is literal in "\)". Prefer explicit escaping: "\\)".
                      ^-- SC1117: Backslash is literal in "\(". Prefer explicit escaping: "\\(".
                          ^-- SC1117: Backslash is literal in "\)". Prefer explicit escaping: "\\)".
                                 ^-- SC1117: Backslash is literal in "\(". Prefer explicit escaping: "\\(".
                                     ^-- SC1117: Backslash is literal in "\)". Prefer explicit escaping: "\\)".
                                            ^-- SC1117: Backslash is literal in "\1". Prefer explicit escaping: "\\1".
                                                 ^-- SC1117: Backslash is literal in "\2". Prefer explicit escaping: "\\2".
                                                      ^-- SC1117: Backslash is literal in "\3". Prefer explicit escaping: "\\3".


In modules/openstack/files/util/novaenv.sh line 21:
    awk -F$fs '{
          ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/openstack/files/util/novaenv.sh line 32:
values=`parse_yaml`
       ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/openstack/files/util/novaenv.sh line 34:
    export $entry
           ^-- SC2163: This does not export 'entry'. Remove $/${} for that, or use ${var?} to quiet.
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/openstack/files/util/wmcs-openstack.sh line 8:
source /root/novaenv.sh
^-- SC1091: Not following: /root/novaenv.sh was not specified as input (see shellcheck -x).


In modules/openstack/files/queens/admin_scripts/wmcs-prod-example.sh line 7:
SERVICE_TOKEN=<redacted>
^-- SC1009: The mentioned syntax error was in this simple command.
                       ^-- SC1073: Couldn't parse this redirection. Fix to allow more checks.
                        ^-- SC1072:  Fix any mentioned problems and try again.


In modules/openstack/files/rocky/admin_scripts/wmcs-prod-example.sh line 7:
SERVICE_TOKEN=<redacted>
^-- SC1009: The mentioned syntax error was in this simple command.
                       ^-- SC1073: Couldn't parse this redirection. Fix to allow more checks.
                        ^-- SC1072:  Fix any mentioned problems and try again.


In modules/icinga/files/sync_check_icinga_contacts.sh line 8:
generate-check-icinga-contacts | ssh "${META_MONITORING}" "cat - > ${CONTACTS_FILE}.new"
                                                                   ^-- SC2029: Note that, unescaped, this expands on the client side.


In modules/icinga/files/sync_check_icinga_contacts.sh line 9:
ssh "${META_MONITORING}" "diff ${CONTACTS_FILE} ${CONTACTS_FILE}.new" | cat
                               ^-- SC2029: Note that, unescaped, this expands on the client side.


In modules/icinga/files/sync_check_icinga_contacts.sh line 15:
ssh "${META_MONITORING}" "/usr/local/bin/check_icinga_validate_config --contacts ${CONTACTS_FILE}.new" | cat
                                                                                 ^-- SC2029: Note that, unescaped, this expands on the client side.


In modules/icinga/files/sync_check_icinga_contacts.sh line 18:
    ssh "${META_MONITORING}" "rm -fv ${CONTACTS_FILE}.new"
                                     ^-- SC2029: Note that, unescaped, this expands on the client side.


In modules/icinga/files/sync_check_icinga_contacts.sh line 22:
ssh "${META_MONITORING}" "mv -fv ${CONTACTS_FILE}.new ${CONTACTS_FILE}"
                                 ^-- SC2029: Note that, unescaped, this expands on the client side.


In modules/icinga/files/check_mailman_queue.sh line 26:
    if [ -d $f ]
            ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/check_mailman_queue.sh line 28:
        queue_size=$(ls $f|wc -l)
                     ^-- SC2012: Use find instead of ls to better handle non-alphanumeric filenames.
                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/check_mailman_queue.sh line 31:
        if [ $queue_size -gt $queue_limit_bounces ] || [ $queue_size -gt $queue_limit_in ] || [ $queue_size -gt $queue_limit_virgin ]
             ^-- SC2086: Double quote to prevent globbing and word splitting.
                             ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                         ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                         ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                                                                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/default_icinga.sh line 1:
# /etc/default/icinga
^-- SC1008: This shebang was unrecognized. Note that ShellCheck only handles sh/bash/dash/ksh.
 ^-- SC1113: Use #!, not just #, for the shebang.


In modules/icinga/files/default_icinga.sh line 4:
ICINGACFG="/etc/icinga/icinga.cfg"
^-- SC2034: ICINGACFG appears unused. Verify use (or export if used externally).


In modules/icinga/files/default_icinga.sh line 7:
CGICFG="/etc/icinga/cgi.cfg"
^-- SC2034: CGICFG appears unused. Verify use (or export if used externally).


In modules/icinga/files/default_icinga.sh line 10:
NICENESS=0
^-- SC2034: NICENESS appears unused. Verify use (or export if used externally).


In modules/icinga/files/submit_check_result.sh line 28:
echocmd="/bin/echo"
^-- SC2034: echocmd appears unused. Verify use (or export if used externally).


In modules/icinga/files/submit_check_result.sh line 33:
datetime=`date +%s`
         ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/submit_check_result.sh line 37:
hostname=`echo $1 | awk -F . ' { print $1 } '`
         ^-- SC2006: Use $(..) instead of legacy `..`.
               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/check_exim_queue.sh line 39:
if [ $WARN_LIMIT == 0 ] || [ $CRIT_LIMIT == 0 ]; then
     ^-- SC2086: Double quote to prevent globbing and word splitting.
                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/check_wikitech_static.sh line 20:
TS_DIFF=$(( $TS_WS - $TS_SS ))
            ^-- SC2004: $/${} is unnecessary on arithmetic variables.
                     ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In modules/icinga/files/check_wikitech_static.sh line 24:
if [ -z $TS_WIKITECH ]; then
        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/check_wikitech_static.sh line 31:
if [ -z $TS_STATIC ]; then
        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/icinga-init.sh line 26:
. /lib/lsb/init-functions
^-- SC1091: Not following: /lib/lsb/init-functions was not specified as input (see shellcheck -x).


In modules/icinga/files/icinga-init.sh line 39:
[ -r /etc/default/icinga ] && . /etc/default/icinga
                              ^-- SC1091: Not following: /etc/default/icinga was not specified as input (see shellcheck -x).


In modules/icinga/files/icinga-init.sh line 51:
  log_action_end_msg ${success:-0} "$*"
                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/icinga-init.sh line 66:
  eval $check_cmd >/dev/null
       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/icinga-init.sh line 69:
    pid="$(cat $THEPIDFILE)"
               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/icinga-init.sh line 70:
    if [ "$pid" ] && kill -0 $pid >/dev/null 2>/dev/null; then
                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/icinga-init.sh line 86:
    set -- `grep ^$1 $2 | sed 's@=@ @'`
           ^-- SC2046: Quote this to prevent word splitting.
           ^-- SC2006: Use $(..) instead of legacy `..`.
                  ^-- SC2086: Double quote to prevent globbing and word splitting.
                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/icinga-init.sh line 88:
    set -- `grep ^$1 $ICINGACFG | sed 's@=@ @'`
           ^-- SC2046: Quote this to prevent word splitting.
           ^-- SC2006: Use $(..) instead of legacy `..`.
                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/icinga-init.sh line 91:
  echo $*
       ^-- SC2048: Use "$@" (with quotes) to prevent whitespace problems.
       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/icinga-init.sh line 97:
    nagios_user="$(get_config icinga_user)"
    ^-- SC2034: nagios_user appears unused. Verify use (or export if used externally).


In modules/icinga/files/icinga-init.sh line 98:
    nagios_group="$(get_config icinga_group)"
    ^-- SC2034: nagios_group appears unused. Verify use (or export if used externally).


In modules/icinga/files/icinga-init.sh line 100:
    log_dir="$(dirname $log_file)"
    ^-- SC2034: log_dir appears unused. Verify use (or export if used externally).
                       ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/icinga-init.sh line 131:
  $PURGESCRIPT $ICINGAPUPPETFILES
               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/icinga-init.sh line 134:
  [ ! -d $DIRECTORY ] && mkdir -p $DIRECTORY
         ^-- SC2086: Double quote to prevent globbing and word splitting.
                                  ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/icinga-init.sh line 135:
  chown icinga:nagios $DIRECTORY
                      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/icinga-init.sh line 140:
      rm -f $icingapipe
            ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/icinga-init.sh line 159:
    if [ `pidof icinga | wc -l ` -gt 0 ]; then
         ^-- SC2046: Quote this to prevent word splitting.
         ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/icinga-init.sh line 160:
        echo -n "Waiting for $NAME daemon to die.."
             ^-- SC2039: In POSIX sh, echo flags are undefined.


In modules/icinga/files/icinga-init.sh line 162:
        while [ `pidof icinga | wc -l ` -gt 0 ]; do
                ^-- SC2046: Quote this to prevent word splitting.
                ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/icinga-init.sh line 163:
            cnt=`expr "$cnt" + 1`
                ^-- SC2006: Use $(..) instead of legacy `..`.
                 ^-- SC2003: expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]].


In modules/icinga/files/icinga-init.sh line 165:
                kill -9 `pidof icinga`
                        ^-- SC2046: Quote this to prevent word splitting.
                        ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/icinga-init.sh line 169:
            echo -n "."
                 ^-- SC2039: In POSIX sh, echo flags are undefined.


In modules/icinga/files/icinga-init.sh line 174:
      rm -f $icingapipe
            ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/icinga-init.sh line 233:
    if [ -z "$?" -o "$?" = "0" ]; then
                 ^-- SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined.
                    ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.


In modules/icinga/files/check_iostat.sh line 42:
iostat=`which iostat 2>/dev/null`
       ^-- SC2006: Use $(..) instead of legacy `..`.
        ^-- SC2230: which is non-standard. Use builtin 'command -v' instead.


In modules/icinga/files/check_iostat.sh line 43:
bc=`which bc 2>/dev/null`
   ^-- SC2006: Use $(..) instead of legacy `..`.
    ^-- SC2230: which is non-standard. Use builtin 'command -v' instead.


In modules/icinga/files/check_iostat.sh line 78:
( [ ! -f $iostat ] || [ ! -f $bc ] ) && \
^-- SC2235: Use { ..; } instead of (..) to avoid subshell overhead.
         ^-- SC2086: Double quote to prevent globbing and word splitting.
                             ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/icinga/files/check_iostat.sh line 79:
( echo "ERROR: You must have iostat and bc installed in order to run this plugin\n\tuse: apt-get install systat bc\n" && exit -1 )
        ^-- SC2028: echo won't expand escape sequences. Consider printf.
                                                                                ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".
                                                                                  ^-- SC1117: Backslash is literal in "\t". Prefer explicit escaping: "\\t".
                                                                                                                  ^-- SC1117: Backslash is literal in "\n". Prefer explicit escaping: "\\n".


In modules/icinga/files/check_iostat.sh line 117:
[[ `expr $io+$queue+$waittime` -ne "1" ]] && \
   ^-- SC2006: Use $(..) instead of legacy `..`.
    ^-- SC2003: expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]].


In modules/icinga/files/check_iostat.sh line 125:
warn_1=`echo $warning | cut -d, -f1`
       ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 127:
warn_2=`echo $warning | cut -d, -f2`
       ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 129:
warn_3=`echo $warning | cut -d, -f3`
       ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 131:
warn_4=`echo $warning | cut -d, -f4`
       ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 133:
warn_5=`echo $warning | cut -d, -f5`
       ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 142:
crit_1=`echo $critical | cut -d, -f1`
       ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 144:
crit_2=`echo $critical | cut -d, -f2`
       ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 146:
crit_3=`echo $critical | cut -d, -f3`
       ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 148:
crit_4=`echo $critical | cut -d, -f4`
       ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 150:
crit_5=`echo $critical | cut -d, -f5`
       ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 163:
if ( [[ $warning -ne "99999" ]] || [[ $critical -ne "99999" ]] ); then
   ^-- SC2233: Remove superfluous (..) around condition.


In modules/icinga/files/check_iostat.sh line 164:
if ( [[ "$warn_1" -gt "$crit_1" ]] || [[ "$warn_2" -gt "$crit_2" ]] ); then
   ^-- SC2233: Remove superfluous (..) around condition.


In modules/icinga/files/check_iostat.sh line 166:
elif ( [[ $io -eq "1" ]] || [[ $waittime -eq "1" ]] ); then
     ^-- SC2233: Remove superfluous (..) around condition.


In modules/icinga/files/check_iostat.sh line 167:
if ( [[ "$warn_3" -gt "$crit_3" ]] || [[ "$warn_4" -gt "$crit_4" ]] || [[ "$warn_5" -gt "$crit_5" ]] ); then
   ^-- SC2233: Remove superfluous (..) around condition.


In modules/icinga/files/check_iostat.sh line 181:
TMPX=`$iostat $disk -x -k -d 10 $samples | grep $disk | tail -1`
     ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 187:
TMPD=`$iostat $disk -k -d 10 $samples | grep $disk | tail -1`
     ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 189:
tps=`echo "$TMPD" | awk '{print $2}'`
    ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 190:
read_sec=`echo "$TMPX" | awk '{print $4}'`
         ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 191:
written_sec=`echo "$TMPX" | awk '{print $5}'`
            ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 194:
kbytes_read_sec=`echo "$TMPX" | awk '{print $6}'`
                ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 195:
kbytes_written_sec=`echo "$TMPX" | awk '{print $7}'`
                   ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 206:
if ( [ "`echo "$tps >= $warn_1" | bc`" == "1" ] || [ "`echo "$read_sec >= $warn_2" | bc`" == "1" ] || \
   ^-- SC2233: Remove superfluous (..) around condition.
        ^-- SC2006: Use $(..) instead of legacy `..`.
                                                      ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 207:
[ "`echo "$written_sec >= $warn_3" | bc`" == "1" ] || [ "`echo "$kbytes_read_sec >= $warn_4" | bc -q`" == "1" ] ||
   ^-- SC2006: Use $(..) instead of legacy `..`.
                                                         ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 208:
[ "`echo "$kbytes_written_sec >= $warn_5" | bc`" == "1" ] ); then
   ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 214:
if ( [ "`echo "$tps >= $crit_1" | bc`" == "1" ] || [ "`echo "$read_sec >= $crit_2" | bc -q`" == "1" ] || \
   ^-- SC2233: Remove superfluous (..) around condition.
        ^-- SC2006: Use $(..) instead of legacy `..`.
                                                      ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 215:
[ "`echo "$written_sec >= $crit_3" | bc`" == "1" ] || [ "`echo "$kbytes_read_sec >= $crit_4" | bc -q`" == "1" ] || \
   ^-- SC2006: Use $(..) instead of legacy `..`.
                                                         ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 216:
[ "`echo "$kbytes_written_sec >= $crit_5" | bc`" == "1" ] ); then
   ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 230:
qsize=`echo "$TMPX" | awk '{print $8}'`
      ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 231:
qlength=`echo "$TMPX" | awk '{print $9}'`
        ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 239:
if ( [ "`echo "$qsize >= $warn_1" | bc`" == "1" ] || [ "`echo "$qlength >= $warn_2" | bc`" == "1" ] ); then
   ^-- SC2233: Remove superfluous (..) around condition.
        ^-- SC2006: Use $(..) instead of legacy `..`.
                                                        ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 245:
if ( [ "`echo "$qsize >= $crit_1" | bc`" == "1" ] || [ "`echo "$qlength >= $crit_2" | bc`" == "1" ] ); then
   ^-- SC2233: Remove superfluous (..) around condition.
        ^-- SC2006: Use $(..) instead of legacy `..`.
                                                        ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 263:
avgwait=`echo "$TMPX" | awk '{print $10}'`
        ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 264:
avgrwait=`echo "$TMPX" | awk '{print $11}'`
         ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 265:
avgwwait=`echo "$TMPX" | awk '{print $12}'`
         ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 266:
avgsvctime=`echo "$TMPX" | awk '{print $13}'`
           ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 267:
avgcpuutil=`echo "$TMPX" | awk '{print $14}'`
           ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 278:
if ( [ "`echo "$avgwait >= $warn_1" | bc`" == "1" ] || [ "`echo "$avgrwait >= $warn_2" | bc -q`" == "1" ] || \
   ^-- SC2233: Remove superfluous (..) around condition.
        ^-- SC2006: Use $(..) instead of legacy `..`.
                                                          ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 279:
[ "`echo "$avgwwait >= $warn_3" | bc`" == "1" ] || [ "`echo "$avgsvctime >= $warn_4" | bc -q`" == "1" ] || \
   ^-- SC2006: Use $(..) instead of legacy `..`.
                                                      ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 280:
[ "`echo "$avgcpuutil >= $warn_5" | bc`" == "1" ] ); then
   ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 286:
if ( [ "`echo "$avgwait >= $crit_1" | bc`" == "1" ] || [ "`echo "$avgrwait >= $crit_2" | bc -q`" == "1" ] || \
   ^-- SC2233: Remove superfluous (..) around condition.
        ^-- SC2006: Use $(..) instead of legacy `..`.
                                                          ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 287:
[ "`echo "$avgwwait >= $crit_3" | bc`" == "1" ] || [ "`echo "$avgsvctime >= $crit_4" | bc -q`" == "1" ] || \
   ^-- SC2006: Use $(..) instead of legacy `..`.
                                                      ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 288:
[ "`echo "$avgcpuutil >= $crit_5" | bc`" == "1" ] ); then
   ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/icinga/files/check_iostat.sh line 296:
PERFDATA=" | avg_io_waittime_ms=$avgiotime; avg_r_waittime_ms=$avgiotime; avg_w_waittime_ms=$avgiotime; avg_service_waittime_ms=$avgsvctime; avg_cpu_utilization=$avgcpuutil;"
                                ^-- SC2154: avgiotime is referenced but not assigned.


In modules/mediawiki/files/decommission_appserver.sh line 8:
. /etc/profile.d/mediawiki.sh
^-- SC1091: Not following: /etc/profile.d/mediawiki.sh was not specified as input (see shellcheck -x).


In modules/mediawiki/files/decommission_appserver.sh line 27:
which decommission && decommission
^-- SC2230: which is non-standard. Use builtin 'command -v' instead.


In modules/haproxy/files/generate_haproxy_default.sh line 7:
for file in $(ls -1 /etc/haproxy/conf.d); do
            ^-- SC2045: Iterating over ls output is fragile. Use globs.


In modules/rabbitmq/files/rabbit_random_guest.sh line 11:
/usr/sbin/rabbitmqctl change_password guest $RNDM
                                            ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/puppetmaster/files/git/private/ssh_wrapper.sh line 3:
/usr/bin/ssh -i ~/.ssh/gitpuppet-private-repo $@
                                              ^-- SC2068: Double quote array expansions to avoid re-splitting elements.


In modules/puppetmaster/files/puppet-facts-export-nodb.sh line 6:
if [ `whoami` != "root" ]; then
     ^-- SC2046: Quote this to prevent word splitting.
     ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/puppetmaster/files/puppet-facts-export-nodb.sh line 12:
mkdir -p $tmpdir/yaml/facts
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/puppetmaster/files/puppet-facts-export-nodb.sh line 23:
    --files-from=<(find $factsdir -type f -mtime -7 -printf "%f\0") $factsdir \
                                                               ^-- SC1117: Backslash is literal in "\0". Prefer explicit escaping: "\\0".


In modules/admin/files/enforce-users-groups.sh line 21:
EXCLUDE=("nobody" \
^-- SC2034: EXCLUDE appears unused. Verify use (or export if used externally).


In modules/admin/files/enforce-users-groups.sh line 28:
    logger $1
           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/admin/files/enforce-users-groups.sh line 29:
    echo $1
         ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/admin/files/enforce-users-groups.sh line 33:
    local haystack=${1}[@]
                   ^-- SC2125: Brace expansions and globs are literal in assignments. Quote it or use an array.


In modules/admin/files/enforce-users-groups.sh line 36:
        if [[ ${i} == ${needle} ]]; then
                      ^-- SC2053: Quote the rhs of == in [[ ]] to prevent glob matching.


In modules/admin/files/enforce-users-groups.sh line 49:
IFS=$'\r\n' PASSWD_USERS=($(/usr/bin/getent passwd))
                          ^-- SC2207: Prefer mapfile or read -a to split command output (or quote to avoid splitting).


In modules/admin/files/enforce-users-groups.sh line 52:
    username=`echo $var | cut -d ':' -f 1`
             ^-- SC2006: Use $(..) instead of legacy `..`.
                   ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/admin/files/enforce-users-groups.sh line 53:
    uid=`echo $var | cut -d ':' -f 3`
        ^-- SC2006: Use $(..) instead of legacy `..`.
              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/admin/files/enforce-users-groups.sh line 55:
    if [ "$(awk -F: '{print $5}' <<<${var})" == "Dynamic User" ]
                                    ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/admin/files/enforce-users-groups.sh line 61:
    if in_array EXCLUDE $username; then
                        ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/admin/files/enforce-users-groups.sh line 66:
        if [[ `/usr/bin/id $username` != *","* ]]; then
              ^-- SC2006: Use $(..) instead of legacy `..`.
                           ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/admin/files/enforce-users-groups.sh line 73:
        if [ -f /etc/sudoers.d/$username ]; then
                               ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/admin/files/enforce-users-groups.sh line 74:
            mv /etc/sudoers.d/$username /home/$username
                              ^-- SC2086: Double quote to prevent globbing and word splitting.
                                              ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/admin/files/enforce-users-groups.sh line 76:
        /usr/sbin/deluser --remove-home --backup-to=$ARCHIVE_DIR $username &> /dev/null
                                                                 ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ldap/files/scripts/opendj-backup.sh line 17:
DATE=`date +%F`
     ^-- SC2006: Use $(..) instead of legacy `..`.


In modules/ldap/files/scripts/opendj-backup.sh line 20:
mkdir $CURRENTBACKUPDIR
      ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ldap/files/scripts/opendj-backup.sh line 24:
/usr/opendj/bin/backup --backUpAll --compress --backupDirectory $CURRENTBACKUPDIR
                                                                ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ldap/files/scripts/opendj-backup.sh line 25:
cp ${INSTANCEDIR}/config/config.ldif $CURRENTBACKUPDIR
                                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ldap/files/scripts/opendj-backup.sh line 26:
cp -R ${INSTANCEDIR}/logs $CURRENTBACKUPDIR
                          ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ldap/files/scripts/opendj-backup.sh line 27:
tar -cjvf ${BACKUPDIR}/opendj-backup-${DATE}.tar.bz2 $CURRENTBACKUPDIR
                                     ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                     ^-- SC2086: Double quote to prevent globbing and word splitting.


In modules/ldap/files/scripts/opendj-backup.sh line 29:
rm -Rf $CURRENTBACKUPDIR
       ^-- SC2086: Double quote to prevent globbing and word splitting.
jbond added a comment.EditedJun 4 2020, 5:58 PM

quick glance suggest most are SC2086, SC1117 & SC2006

jbond added a comment.EditedJun 4 2020, 6:47 PM

this is a bit better

$ find modules -path modules/admin/files/home -prune -o -name \*.sh -exec shellcheck -f gcc {} \; |  awk '$2=="error:"'
modules/deployment/files/umask-wikidev-profile-d.sh:1:1: error: On most OS, shebangs can only specify a single parameter. [SC2096]
modules/deployment/files/umask-wikidev-profile-d.sh:1:2: error: Remove spaces between # and ! in the shebang. [SC1115]
modules/mailman/files/scripts/remove_from_private.sh:91:27: error: Argument mixes string and array. Use * or separate argument. [SC2145]
modules/mailman/files/scripts/remove_from_private.sh:112:17: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
modules/dumps/files/generation/rsync-to-peers.sh:219:21: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
modules/dumps/files/generation/rsync-to-peers.sh:250:20: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
modules/dumps/files/generation/rsync-to-peers.sh:264:17: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
modules/dumps/files/generation/job_watcher.sh:75:14: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
modules/dumps/files/web/cleanups/cleanup_old_miscdumps.sh:91:18: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
modules/base/files/environment/mysql-ps1.sh:1:1: error: Tips depend on target shell and yours is unknown. Add a shebang. [SC2148]
modules/base/files/environment/field.sh:1:1: error: Tips depend on target shell and yours is unknown. Add a shebang. [SC2148]
modules/confluent/files/kafka/kafka.sh:55:48: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
modules/confluent/files/kafka/kafka.sh:62:52: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
modules/confluent/files/kafka/kafka.sh:69:52: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
modules/confluent/files/kafka/kafka.sh:76:48: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
modules/confluent/files/kafka/kafka.sh:117:31: error: Argument mixes string and array. Use * or separate argument. [SC2145]
modules/confluent/files/kafka/kafka.sh:118:26: error: Argument mixes string and array. Use * or separate argument. [SC2145]
modules/profile/files/openstack/base/novaobserver/observerenv.sh:1:1: error: Tips depend on target shell and yours is unknown. Add a shebang. [SC2148]
modules/osm/files/process-osm-data.sh:252:16: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
modules/cdh/files/hive/hiveserver2.sh:1:1: error: Tips depend on target shell and yours is unknown. Add a shebang. [SC2148]
modules/vagrant/files/alias-vagrant-profile-d.sh:1:1: error: Tips depend on target shell and yours is unknown. Add a shebang. [SC2148]
modules/statistics/files/hardsync.sh:61:16: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
modules/statistics/files/hardsync.sh:75:13: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
modules/statistics/files/hardsync.sh:78:9: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
modules/planet/templates/feeds/check_https.sh:4:17: error: Iterating over ls output is fragile. Use globs. [SC2045]
modules/prometheus/files/usr/local/bin/prometheus-local-crontabs.sh:29:38: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
modules/prometheus/files/usr/local/bin/prometheus-local-crontabs.sh:29:53: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
modules/openstack/files/util/novaenv.sh:1:1: error: Tips depend on target shell and yours is unknown. Add a shebang. [SC2148]
modules/openstack/files/queens/admin_scripts/wmcs-prod-example.sh:7:24: error: Couldn't parse this redirection. Fix to allow more checks. [SC1073]
modules/openstack/files/queens/admin_scripts/wmcs-prod-example.sh:7:24: error:  Fix any mentioned problems and try again. [SC1072]
modules/openstack/files/rocky/admin_scripts/wmcs-prod-example.sh:7:24: error: Couldn't parse this redirection. Fix to allow more checks. [SC1073]
modules/openstack/files/rocky/admin_scripts/wmcs-prod-example.sh:7:24: error:  Fix any mentioned problems and try again. [SC1072]
modules/icinga/files/default_icinga.sh:1:2: error: Use #!, not just #, for the shebang. [SC1113]
modules/puppetmaster/files/git/private/ssh_wrapper.sh:3:47: error: Double quote array expansions to avoid re-splitting elements. [SC2068]

Change 602643 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] deployment: fix shellcheck issues umask-wikidev-profile-d.sh

https://gerrit.wikimedia.org/r/602643

Change 602644 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] mailmain: fix shellcheck issues remove_from_private.sh

https://gerrit.wikimedia.org/r/602644

Change 602645 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] dumps: fix shellcheck issues

https://gerrit.wikimedia.org/r/602645

Change 602646 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] confluent: fix shellcheck issues

https://gerrit.wikimedia.org/r/602646

Change 602647 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] osm: fix shellcheck issues

https://gerrit.wikimedia.org/r/602647

Change 602648 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] statistics: fix shelcheck issues in hardsync

https://gerrit.wikimedia.org/r/602648

Change 602649 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] prometheus: fix shellcheck issues in prometheus-local-crontabs.sh

https://gerrit.wikimedia.org/r/602649

Change 602650 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] planet: fix shellcheck issues in check_https

https://gerrit.wikimedia.org/r/602650

Change 602650 merged by Dzahn:
[operations/puppet@production] planet: fix shellcheck issues in check_https

https://gerrit.wikimedia.org/r/602650

Change 602644 merged by Dzahn:
[operations/puppet@production] mailmain: fix shellcheck issues remove_from_private.sh

https://gerrit.wikimedia.org/r/602644

Change 602643 merged by Jbond:
[operations/puppet@production] misc: fix minor shellcheck issues in a few scripts

https://gerrit.wikimedia.org/r/602643

Change 602693 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] CI: add CI to check shell scripts

https://gerrit.wikimedia.org/r/602693

Change 602694 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] CI: add some shell scripts to test the new shellcheck CI check

https://gerrit.wikimedia.org/r/602694

Change 602646 merged by Jbond:
[operations/puppet@production] confluent: fix shellcheck issues

https://gerrit.wikimedia.org/r/602646

Change 602648 merged by Jbond:
[operations/puppet@production] statistics: fix shelcheck issues in hardsync

https://gerrit.wikimedia.org/r/602648

Change 602710 had a related patch set uploaded (by Jbond; owner: John Bond):
[integration/config@master] operations-puppet: add shellcheck to docker image

https://gerrit.wikimedia.org/r/602710

jbond added a comment.Jun 5 2020, 3:23 PM

Originally i wanted to do this checking in the Rake checks as that feels like the right place for them. however i cant think of a reasonable way to compile the erb files as we dont know the values of variables that would ordinarily be bound by the parent Puppet manifest. And different variables/hosts/roles etc could produce different outputs. As such im now leaning more to putting this in PCC, however i wonder if this should be in standard and in the main PCC code or if we should just have some helper scripts in utils. Regardless ill probably work on the latter to see how it looks but ideas welcome

jbond added a comment.Jun 5 2020, 3:37 PM

Another option is we could just ban templated scripts and add CI to reject any erb file with a shebang in it. This would mean updating any current templated scripts to read a new templated config. i.e. move all the dynamic bits to a template

Change 602710 merged by jenkins-bot:
[integration/config@master] operations-puppet: add shellcheck to docker image

https://gerrit.wikimedia.org/r/602710

Change 602728 had a related patch set uploaded (by Hashar; owner: Hashar):
[integration/config@master] jjb: update puppet.git container for shellcheck

https://gerrit.wikimedia.org/r/602728

Change 602728 merged by jenkins-bot:
[integration/config@master] jjb: update puppet.git container for shellcheck

https://gerrit.wikimedia.org/r/602728

Change 602732 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] puppet-merge: split dynamic values out of puppet-merge script

https://gerrit.wikimedia.org/r/602732

Change 602738 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] puppet-merge: fix shellcheck issues

https://gerrit.wikimedia.org/r/602738

Volans added a comment.Jun 5 2020, 7:46 PM

Sorry I'm late to this party, just noticed the task. I actually think that this is the wrong approach. We should not have executables that are ERB templates for anything more complex than 10 lines IMHO.
Those should be static scripts that parse a configuration file, and only the configuration file should be templated with ERB.

My 2 cents.

CDanis added a comment.Jun 5 2020, 7:49 PM

@Volans

Another option is we could just ban templated scripts and add CI to reject any erb file with a shebang in it. This would mean updating any current templated scripts to read a new templated config. i.e. move all the dynamic bits to a template

John has since gone on to implement this for puppet-merge (patches still pending) and I agree it's probably the right approach.

CDanis renamed this task from automated linting/analysis/other CI of Python/shell scripts generated by ERB to Shell/Python/other scripts should not be generated by ERB files; dynamic parts should be a simple ERB config file.Jun 5 2020, 8:01 PM
CDanis updated the task description. (Show Details)
Volans added a comment.Jun 5 2020, 8:12 PM

@CDanis yeah, sorry I noticed that after replying.
Totally agree with this approach, would be nice to have the CI check but we have a bunch of few liners that would become just more complex and probably not gaining a lot, see for example the first part of this list:

$ for file in $(find . -not -path "./.bundle/*" -name "*.erb"); do if grep -q '^#!\/' "$file"; then wc -l "$file"; fi; done | sort -n
       1 ./modules/profile/templates/analytics/refinery/job/refinery-download-project-namespace-map.sh.erb
       2 ./modules/httpbb/templates/httpbb.sh.erb
       2 ./modules/puppetmaster/templates/git/private/pre-commit.erb
       3 ./modules/aptrepo/templates/log.erb
       3 ./modules/profile/templates/icinga/icinga-downtime-absent.sh.erb
       3 ./modules/varnish/templates/varnishmtail.default.erb
       4 ./modules/phabricator/templates/deployment/phab_deploy_promote.erb
       4 ./modules/rsync/templates/quickdatacopy.erb
       5 ./modules/phabricator/templates/deployment/phab_deploy_rollback.erb
       5 ./modules/trafficserver/templates/ats_instance_restart.sh.erb
       6 ./modules/fastnetmon/templates/fastnetmon_notify.sh.erb
       7 ./modules/conftool/templates/conftool-merge.erb
       7 ./modules/profile/templates/ncredir/ncredirlog.sh.erb
       7 ./modules/profile/templates/trafficserver/atslog.sh.erb
       8 ./modules/conftool/templates/safe-depool.erb
       8 ./modules/conftool/templates/safe-pool.erb
       8 ./modules/profile/templates/prometheus/node-directory-size.erb
       8 ./modules/profile/templates/trafficserver/update-ocsp-trafficserver-hook.erb
       8 ./modules/vagrant/templates/mwvagrant.erb
       8 ./modules/vagrant/templates/start-mwvagrant.sh.erb
       9 ./modules/conftool/templates/safe-restart.erb
       9 ./modules/service/templates/check-service.erb
      10 ./modules/role/templates/mariadb/backups/dumps-otrs.sh.erb
      11 ./modules/base/templates/initramfs_sleep.erb
      11 ./modules/cfssl/templates/initca.sh.erb
      11 ./modules/dumps/templates/web/fetches/analytics/job/rsync_script.sh.erb
      11 ./modules/snapshot/templates/set_dump_dirs.sh.erb
      11 ./modules/vagrant/templates/labs-vagrant.erb
      12 ./modules/phabricator/templates/vcs/phabricator-ssh-hook.sh.erb
      12 ./modules/profile/templates/presto/presto_client_ssl_kerberos.erb
      13 ./modules/monitoring/templates/check_dir-not-bad-owner.erb
      13 ./modules/profile/templates/analytics/refinery/job/refinery-drop-mediawiki-xmldumps-pages_meta_history.sh.erb
      13 ./modules/profile/templates/analytics/refinery/job/refinery-eventlogging-saltrotate.erb
      13 ./modules/profile/templates/analytics/refinery/job/refinery-import-mediawiki-dumps.sh.erb
      13 ./modules/profile/templates/kerberos/replicate_krb_database.erb
      13 ./modules/service/templates/node/tail-log.erb
      14 ./modules/package_builder/templates/D05localsources.erb
      14 ./modules/profile/templates/analytics/refinery/job/refinery-sqoop-whole-mediawiki.sh.erb
      15 ./modules/service/templates/node/apply-config.sh.erb
      16 ./modules/package_builder/templates/D01security.erb
      16 ./modules/profile/templates/analytics/search/airflow/airflow-clean-log-dirs.erb
      16 ./modules/profile/templates/analytics/search/airflow/airflow.sh.erb
      18 ./modules/cescout/templates/metadb-configure.sh.erb
      19 ./modules/conftool/templates/initialize.sh.erb
      20 ./modules/profile/templates/analytics/refinery/job/refinery-sqoop-mediawiki-production.sh.erb
      20 ./modules/profile/templates/icinga/inactive.motd.erb
      21 ./modules/openstack/templates/initscripts/nova-fullstack.erb
      21 ./modules/package_builder/templates/D02archive.erb
      21 ./modules/profile/templates/analytics/refinery/job/refinery-sqoop-mediawiki.sh.erb
      21 ./modules/profile/templates/analytics/refinery/job/spark_job.sh.erb
      21 ./modules/puppetmaster/templates/git-master-postcommit.erb
      22 ./modules/docker/templates/images/build-base-images.erb
      22 ./modules/package_builder/templates/D01apt.wikimedia.org.erb
      22 ./modules/profile/templates/analytics/refinery/job/refinery-import-wikidata-dumps.sh.erb
      22 ./modules/profile/templates/analytics/refinery/job/refinery-sqoop-mediawiki-private.sh.erb
      22 ./modules/profile/templates/debmonitor/server/run_django_command.sh.erb
      22 ./modules/role/templates/icinga/sync_icinga_state.sh.erb
      22 ./modules/tilerator/templates/notify-tilerator.erb
      23 ./modules/profile/templates/kerberos/kadminserver/inactive.motd.erb
      23 ./modules/profile/templates/mediawiki/maintenance/inactive.motd.erb
      23 ./modules/role/templates/deployment/inactive.motd.erb
      24 ./modules/package_builder/templates/D02backports.erb
      24 ./modules/statistics/templates/published-sync.sh.erb
      26 ./modules/profile/templates/install_server/inactive.motd.erb
      26 ./modules/role/templates/releases/rsync_source_warning.motd.erb
      28 ./modules/profile/templates/hadoop/net-topology.py.erb
      28 ./modules/rsync/templates/quickdatacopy-ssl-wrapper.erb
      30 ./modules/osm/templates/import_waterlines.erb
      33 ./modules/monitoring/templates/check_git-needs-merge.erb
      33 ./modules/profile/templates/calico/build-calico.sh.erb
      33 ./modules/role/templates/bastionhost/inactive.motd.erb
      34 ./modules/base/templates/check_eth.erb
      36 ./modules/docker/templates/images/build-alpine.erb
      39 ./modules/phabricator/templates/deployment/phab_deploy_finalize.erb
      44 ./modules/osm/templates/replicate-osm.erb
      46 ./modules/profile/templates/wmcs/dologmsg.erb
      47 ./modules/base/templates/puppet-run.erb
      49 ./modules/openstack/templates/bootstrap/glance/glance_seed.sh.erb
      60 ./modules/httpbb/templates/deploy_apache_change.sh.erb
      61 ./modules/backup/templates/mysql-predump.erb
      65 ./modules/profile/templates/hive/client/beeline_wrapper.py.erb
      68 ./modules/profile/templates/icinga/icinga-downtime.sh.erb
      69 ./modules/bacula/templates/bpipe-mysql-db.erb
      73 ./modules/haproxy/templates/check_haproxy.erb
      78 ./modules/profile/templates/wmcs/nfs/nfs-manage.sh.erb
      91 ./modules/cescout/templates/metadb_s3_tarx.erb
      98 ./modules/profile/templates/initscripts/mariadb/misc/eventlogging/eventlogging_sync.sysvinit.erb
     102 ./modules/spamassassin/templates/sa-update-cron.erb
     109 ./modules/cdh/templates/spark/spark-env.sh.erb
     148 ./modules/beta/templates/wmf-beta-autoupdate.py.erb
     149 ./modules/labstore/templates/tc-setup.sh.erb
     157 ./modules/service/templates/deployment_script.sh.erb
     202 ./modules/puppetmaster/templates/puppet-merge.erb
     221 ./modules/openstack/templates/queens/nova/placement/nova-placement-api.erb
     221 ./modules/openstack/templates/rocky/nova/placement/nova-placement-api.erb
     260 ./modules/phabricator/templates/community_metrics.sh.erb
     328 ./modules/phabricator/templates/project_changes.sh.erb
     446 ./modules/mariadb/templates/mariadb.server.erb

I agree. Example: the first attempt at ./modules/dumps/templates/web/fetches/analytics/job/rsync_script.sh.erb was here https://gerrit.wikimedia.org/r/#/c/operations/puppet/+/594773/2/modules/dumps/manifests/web/fetches/analytics/job.pp so you can see why erb was the natural approach in the end. Another file in there (modules/snapshot/templates/set_dump_dirs.sh.erb) literally just sets some vars to be picked up by the 'real' shell scripts that use it; I favour allowing scripts like these and strongly encouraging folks with long scripts as erb files to refactor them accordingly.

jbond added a comment.Jun 5 2020, 8:38 PM

@CDanis yeah, sorry I noticed that after replying.
Totally agree with this approach, would be nice to have the CI check but we have a bunch of few liners that would become just more complex and probably not gaining a lot, see for example the first part of this list:

for scripts that are just one line i think it reasonable to just build the content in puppet, this is a bit of a cheat but for simple one liners i think its a fine compromise. I took a quick look through the files other then the oneliners, some of them don't actually need to be templates as there is no erb and a few others look like they are already config files so we could possibly just remove the shebang . however there are of course some that may be a bit awkward to fit into this model. Perhaps we should just whitelist them. It would at least mean going forward we don't have more violations added.

Ill have a closer look next week and see if how much we can reduce that list with quick wins.

Change 602771 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] Example: build script in line in puppet

https://gerrit.wikimedia.org/r/602771

jbond added a comment.EditedJun 5 2020, 9:05 PM

I agree. Example: the first attempt at ./modules/dumps/templates/web/fetches/analytics/job/rsync_script.sh.erb was here https://gerrit.wikimedia.org/r/#/c/operations/puppet/+/594773/2/modules/dumps/manifests/web/fetches/analytics/job.pp so you can see why erb was the natural approach in the end. Another file in there (modules/snapshot/templates/set_dump_dirs.sh.erb) literally just sets some vars to be picked up by the 'real' shell scripts that use it; I favour allowing scripts like these and strongly encouraging folks with long scripts as erb files to refactor them accordingly.

sorry i missed this before i responded. I took a look at this script and Created a CR to show how it may look building the script in puppet. like i said its a bit of a cheat but tbh for simple things like this i prefer to see them inline in the puppet manifest instead of having to open a new file. that said i suspect many may disagree

@jbond I added the author of the one patch as a reviewer for their thoughts, since likely analytics folks will wind up maintaining that particular bit.

Change 602647 merged by Ryan Kemper:
[operations/puppet@production] osm: fix shellcheck issues

https://gerrit.wikimedia.org/r/602647

Change 603175 had a related patch set uploaded (by Hashar; owner: Hashar):
[integration/config@master] docker: use more recent shellcheck

https://gerrit.wikimedia.org/r/603175

hashar added a comment.Jun 8 2020, 6:52 AM

The CI container is build using Buster which comes with shellcheck 0.5.0 from May 2018. I have proposed a change to borrow the package from buster-backports and get 0.7.1 instead. https://gerrit.wikimedia.org/r/#/c/integration/config/+/603175

Notably because it adds new checks and it also has two interesting options which we might want to use:

  • --severity for filtering by minimum severity. So that potentially we can make the task fail on error but just report on warnings/info etc.
  • --wiki-link-count for showing wiki links . Grants us detailed information

Change 603364 had a related patch set uploaded (by Dzahn; owner: Dzahn):
[operations/puppet@production] phabricator: convert 2 scripts created from erb to files with config files

https://gerrit.wikimedia.org/r/603364

jbond added a comment.Jun 8 2020, 9:45 AM

@jbond I added the author of the one patch as a reviewer for their thoughts, since likely analytics folks will wind up maintaining that particular bit.

great thanks

Change 602649 merged by Jbond:
[operations/puppet@production] prometheus: fix shellcheck issues in prometheus-local-crontabs.sh

https://gerrit.wikimedia.org/r/602649

Change 603364 merged by Dzahn:
[operations/puppet@production] phabricator: convert 2 scripts created from erb to files with config files

https://gerrit.wikimedia.org/r/603364

Change 602732 merged by Jbond:
[operations/puppet@production] puppet-merge: split dynamic values out of puppet-merge script

https://gerrit.wikimedia.org/r/602732

Change 602738 merged by Jbond:
[operations/puppet@production] puppet-merge: fix shellcheck issues

https://gerrit.wikimedia.org/r/602738

Change 603490 had a related patch set uploaded (by Dzahn; owner: Dzahn):
[operations/puppet@production] httpbb: convert an .erb.sh script to inline content

https://gerrit.wikimedia.org/r/603490

Change 603492 had a related patch set uploaded (by Dzahn; owner: Dzahn):
[operations/puppet@production] icinga: convert sync_icinga_state.sh.erb to file with config

https://gerrit.wikimedia.org/r/603492

Change 603175 merged by jenkins-bot:
[integration/config@master] docker: use more recent shellcheck

https://gerrit.wikimedia.org/r/603175

Mentioned in SAL (#wikimedia-releng) [2020-06-08T17:55:39Z] <James_F> Docker: Publishing operations-puppet image, now with upgraded shellcheck T254480

Change 603563 had a related patch set uploaded (by Jforrester; owner: Jforrester):
[integration/config@master] jjb: Upgrade puppet jobs to new shellcheck version

https://gerrit.wikimedia.org/r/603563

Change 603563 merged by jenkins-bot:
[integration/config@master] jjb: Upgrade puppet jobs to new shellcheck version

https://gerrit.wikimedia.org/r/603563

Change 603490 merged by Dzahn:
[operations/puppet@production] httpbb: convert an .erb.sh script to inline content

https://gerrit.wikimedia.org/r/603490

Change 603492 merged by Dzahn:
[operations/puppet@production] icinga: convert sync_icinga_state.sh.erb to file with config

https://gerrit.wikimedia.org/r/603492

Change 605261 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] alytics::refinery::job: build simple script inline in puppet

https://gerrit.wikimedia.org/r/605261

Change 605262 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] puppetmaster::gitclone: build single line script inline

https://gerrit.wikimedia.org/r/605262

Change 605262 merged by Jbond:
[operations/puppet@production] puppetmaster::gitclone: build single line script inline

https://gerrit.wikimedia.org/r/605262

Change 605267 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] aptrepo: build single line shell script inline

https://gerrit.wikimedia.org/r/605267

Change 605271 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] profile::icinga: move single line scripts in line

https://gerrit.wikimedia.org/r/605271

Change 605272 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] varnish::logging: move default definitions inline

https://gerrit.wikimedia.org/r/605272

Change 605274 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] phabricator: move template to file as no dynamic values

https://gerrit.wikimedia.org/r/605274

Change 605274 merged by Jbond:
[operations/puppet@production] phabricator: move template to file as no dynamic values

https://gerrit.wikimedia.org/r/605274

Change 605275 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] rsync: move oneline script inline

https://gerrit.wikimedia.org/r/605275

Change 605276 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] phabricator: move template to file as no dynamic values

https://gerrit.wikimedia.org/r/605276

Change 605279 had a related patch set uploaded (by Jbond; owner: John Bond):
[operations/puppet@production] trafficserver::instance: move single line scripts inline

https://gerrit.wikimedia.org/r/605279

Change 605276 merged by Jbond:
[operations/puppet@production] phabricator: move template to file as no dynamic values

https://gerrit.wikimedia.org/r/605276

Change 605271 merged by Jbond:
[operations/puppet@production] profile::icinga: move single line scripts in line

https://gerrit.wikimedia.org/r/605271

Change 605267 merged by Jbond:
[operations/puppet@production] aptrepo: build single line shell script inline

https://gerrit.wikimedia.org/r/605267

Change 605275 merged by Jbond:
[operations/puppet@production] rsync: move oneline script inline

https://gerrit.wikimedia.org/r/605275

Change 602771 merged by Jbond:
[operations/puppet@production] Example: build script in line in puppet

https://gerrit.wikimedia.org/r/602771

Change 602645 merged by ArielGlenn:
[operations/puppet@production] dumps: fix shellcheck issues

https://gerrit.wikimedia.org/r/602645

Change 602693 merged by Jbond:
[operations/puppet@production] CI: add CI to check shell scripts

https://gerrit.wikimedia.org/r/c/operations/puppet/ /602693

Change 602694 abandoned by Jbond:
[operations/puppet@production] CI: add some shell scripts to test the new shellcheck CI check

Reason:

https://gerrit.wikimedia.org/r/602694

Change 605272 merged by Jbond:
[operations/puppet@production] varnish::logging: move default definitions inline

https://gerrit.wikimedia.org/r/605272

Change 605279 merged by Jbond:
[operations/puppet@production] trafficserver::instance: move single line scripts inline

https://gerrit.wikimedia.org/r/605279

Change 615413 had a related patch set uploaded (by Filippo Giunchedi; owner: Filippo Giunchedi):
[operations/puppet@production] rsync: fix quickdatacopy sync script

https://gerrit.wikimedia.org/r/615413

Change 615413 merged by Filippo Giunchedi:
[operations/puppet@production] rsync: fix quickdatacopy sync script

https://gerrit.wikimedia.org/r/615413

Change 630257 had a related patch set uploaded (by Dzahn; owner: Dzahn):
[operations/puppet@production] phabricator: don't create chk_phuser shell script from erb (WIP)

https://gerrit.wikimedia.org/r/630257

Change 630257 merged by Dzahn:
[operations/puppet@production] phabricator: don't create chk_phuser shell script from erb

https://gerrit.wikimedia.org/r/630257