In /usr/bin/tgz line 41: { echo "Error: $0: ${@-}." >&2 ^---^ SC2145: Argument mixes string and array. Use * or separate argument. In /usr/bin/tgz line 56: src="${@-}" ^-----^ SC2124: Assigning an array to a string! Assign as array, or use * instead of @ to concatenate. In /usr/bin/tgz line 64: *.t?z | *.?z | *.z | *.Z | *.tz | *.tz? ) ^--^ SC2221: This pattern always overrides a later one on line 64. ^--^ SC2222: This pattern never matches because of a previous pattern on line 64. In /usr/bin/tgz line 77: if [ -z "$dest" -o "X$dest" = 'X-' ]; then ^-- SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined. In /usr/bin/tgz line 79: tar cvfS - -- $src | gzip -9v ^--^ SC2086: Double quote to prevent globbing and word splitting. Did you mean: tar cvfS - -- "$src" | gzip -9v In /usr/bin/tgz line 82: tar -cvS --totals --exclude "$dest" -f - -- $src | gzip -9v > "$dest" ^-----^ SC2094: Make sure not to read and write the same file in the same pipeline. ^--^ SC2086: Double quote to prevent globbing and word splitting. ^-----^ SC2094: Make sure not to read and write the same file in the same pipeline. Did you mean: tar -cvS --totals --exclude "$dest" -f - -- "$src" | gzip -9v > "$dest" For more information: https://www.shellcheck.net/wiki/SC2145 -- Argument mixes string and array. ... https://www.shellcheck.net/wiki/SC2124 -- Assigning an array to a string! A... https://www.shellcheck.net/wiki/SC2166 -- Prefer [ p ] || [ q ] as [ p -o q...