久々に shellscript 書いていたら二つほど koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts に注意されたのでメモ
SC2003 expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]].
SC2003 · koalaman/shellcheck Wiki
shellscript の中で expr
を使ったところ食らった。シェルコマンドに組み込まれている奴らを使いなさいな、とのこと。
自然と expr ${i} + 1
書きがちだし気をつけようと思った
SC2012 Use find instead of ls to better handle non-alphanumeric filenames.
SC2012 · koalaman/shellcheck Wiki
とあるフォルダ配下に、実行後のログファイルを連番でおいていこうとした時に、ついこう書いてしまった。
count=$(ls ${dir} | wc -l) if [ "${count}" == "" ]; then ${count}=0 fi filenum=$(expr ${count} + 1)
これも (*.gz)
とか知らなかったし、さっきの SC2003 にもあった #var
とかも全然使ってないのでふむふむといいながらやっていた。
今回の場合は、count=$(find ${dir} -maxdepth 1 -type f -name "*.csv.gz" | wc -l)
にした。一応いいところ取りのつもりではある。
余談
- alphanumeric : 英数字 はえ〜ってなった。
おまけ : VSCode で ShellCheck
timonwong/vscode-shellcheck: An extension to use shellcheck linter in vscode があるので是非使いましょう。便利