見出し画像

シェルスクリプトのコーディングスタイル問題!case ... in ... ;; esacってどうする?

私の好きなスタイル

# [ -n "$str" ] && cmdとか[ -z "$str" ] && cmd相当に対してのみの場合
case "${FORCE_WGET:-}" in (?*)
   WGET_CMD="$(which wget)"
esac ## 任意で;;をつけない
# 分岐が複数の場合
case "${CMD_WGET:+wget}${CMD_CURL:+curl}" in (wget|wgetcurl)
   "$CMD_WGET" ...
;;(curl)
   "$CMD_CURL" ...
;;esac ## てか;;をつけることを強制したほうがいいんじゃね?

だからどうしたという記事でした。

両カッコとかいるの?そんなところで改行するの?それは適当な議論がなされることでしょう。

編集履歴 2023-03-08

`${CMD_WGET:-wget}`と誤って書いていました。`${CMD_WGET:+wget}`と直しました。これは、「変数CMD_WGETが定義済でありかつ空文字列以外ならばwgetという文字列に置換し、そうでなければ空文字列に置換する」変数展開です。

この記事が気に入ったらサポートをしてみませんか?