長らく悩んでいたのが解決したのでエントリー
シェルスクリプトを書いていてたまにすごく残念な気持ちになるのが、ファイル数のカウント。
いつもこんなカウントをしていた。
NUMBER_OF_FILE=$(ls "$TARGET_PATH" | wc -l)
だが、単にファイル数をカウントするためだけにls
とwc
をexecするというのは、非常に抵抗がある。
bashだけでなんとかできないかとmanpageを見ながら考えてみたが、これでよさそうだ。
TEMP=("$TARGET_PATH"/*)
test ${TEMP[0]} = "$TARGET_PATH/*" && unset TEMP[0]
NUMBER_OF_FILE=${#TEMP[@]}
ファイルが一つも存在しない場合が無いのなら、2行目は無くすことができる。
もうちょっと短く書けると良かったんだけど。