![見出し画像](https://assets.st-note.com/production/uploads/images/82512768/rectangle_large_type_2_f9b7b4f946a77e833c42ae3eccb67fd1.png?width=1200)
Photo by
yamamoto15
シェルスクリプトのコーディングスタイル問題!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という文字列に置換し、そうでなければ空文字列に置換する」変数展開です。