In /usr/bin/m17n-db line 65: ENTRIES=`sed -n "/$TAG0/s|$SPC($TAGS$FILE).*$|/\1/\2/\3/\4/\5|p" $DIRFILE` ^-- SC2006: Use $(...) notation instead of legacy backticked `...`. Did you mean: ENTRIES=$(sed -n "/$TAG0/s|$SPC($TAGS$FILE).*$|/\1/\2/\3/\4/\5|p" $DIRFILE) In /usr/bin/m17n-db line 67: cd $datadir/m17n ^--------------^ SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails. Did you mean: cd $datadir/m17n || exit In /usr/bin/m17n-db line 70: FN=`expr "$e" : "/[^/]*/[^/]*/[^/]*/[^/]*/\(.*\)"` ^-- SC2006: Use $(...) notation instead of legacy backticked `...`. Did you mean: FN=$(expr "$e" : "/[^/]*/[^/]*/[^/]*/[^/]*/\(.*\)") In /usr/bin/m17n-db line 74: if test -f $f; then ^-- SC2086: Double quote to prevent globbing and word splitting. Did you mean: if test -f "$f"; then In /usr/bin/m17n-db line 75: ENTRY=`sed -n "/$TAG0/s|$SPC($TAGS).*$|/\1/\2/\3/\4|p" $f` ^-- SC2006: Use $(...) notation instead of legacy backticked `...`. ^-- SC2086: Double quote to prevent globbing and word splitting. Did you mean: ENTRY=$(sed -n "/$TAG0/s|$SPC($TAGS).*$|/\1/\2/\3/\4|p" "$f") In /usr/bin/m17n-db line 82: if test -f $FN; then ^-^ SC2086: Double quote to prevent globbing and word splitting. Did you mean: if test -f "$FN"; then In /usr/bin/m17n-db line 90: /$TAG0/$TAG1/$TAG2/$TAG3) ^----------------------^ SC2254: Quote expansions in case patterns to match literally rather than as a glob. In /usr/bin/m17n-db line 91: FN=`expr "$l" : "/[^/]*/[^/]*/[^/]*/[^/]*/\(.*\)"` ^-- SC2006: Use $(...) notation instead of legacy backticked `...`. Did you mean: FN=$(expr "$l" : "/[^/]*/[^/]*/[^/]*/[^/]*/\(.*\)") In /usr/bin/m17n-db line 92: echo "`pwd`/$FN" ^---^ SC2006: Use $(...) notation instead of legacy backticked `...`. Did you mean: echo "$(pwd)/$FN" For more information: https://www.shellcheck.net/wiki/SC2164 -- Use 'cd ... || exit' or 'cd ... |... https://www.shellcheck.net/wiki/SC2254 -- Quote expansions in case patterns... https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...