2012-09-22
シェルスクリプトのコーディングスタイル
指針
全ての項目に共感できたので、自分で決められるときはこのスタイルを使うようにしている。
シェルスクリプト Tips - UNIX & Linux コマンド・シェルスクリプト リファレンス: http://shellscript.sunone.me/tips.html#tips-1
課題
- case文のインデント
- 長いパイプの改行
case文のインデント
指針
case 文の使用方法 - UNIX & Linux コマンド・シェルスクリプト リファレンス: http://shellscript.sunone.me/case.html
選択肢
case文のスタイルはいろいろな選択肢がある。 特にシェルスクリプトではセミコロンが付く分、選択肢が多い。
- パターンと処理の間を改行するか
- 処理とセミコロンの間を改行するか
- case宣言とパターンの間をインデントするか
1. パターンと処理の間を改行するか
1-A
case 値 in
パターン1 ) 処理1 ;;
パターン2 ) 処理2 ;;
パターン3 ) 処理3 ;;
…
パターンn ) 処理n ;;
esac
1-B
case 値 in
パターン1 )
処理1 ;;
パターン2 )
処理2 ;;
パターン3 )
処理3 ;;
…
パターンn )
処理n ;;
esac
2. 処理とセミコロンの間を改行するか
2-A
case 値 in
パターン1 )
処理1 ;;
パターン2 )
処理2 ;;
パターン3 )
処理3 ;;
…
パターンn )
処理n ;;
esac
2-B
case 値 in
パターン1 )
処理1
;;
パターン2 )
処理2
;;
パターン3 )
処理3
;;
…
パターンn )
処理n
;;
esac
3. case宣言とパターンの間をインデントするか
3-A
case 値 in
パターン1 )
処理1
;;
パターン2 )
処理2
;;
パターン3 )
処理3
;;
…
パターンn )
処理n
;;
esac
3-B
case 値 in
パターン1 )
処理1
;;
パターン2 )
処理2
;;
パターン3 )
処理3
;;
…
パターンn )
処理n
;;
esac
私見
- 個人的には1-B、2-B、3-Bが好み。
- 1-A〜2-Aまではセミコロン忘れが怖い。
- 1-A〜3-Aまでは、4タブ以上だと横に長くなってしまう。
- ただ、2タブなら3-Aでもいいと思っている。
長いパイプの改行
- 1-A. 改行しない
- 1-B. 改行してインデントする
- 1-C. 改行してインデントしない
1-A. 改行しない
処理1 | 処理2 | 処理3 | 処理4
1-B. 改行してインデントする
処理1 |
処理2 |
処理3 |
処理4
1-C. 改行してインデントしない
処理1 |
処理2 |
処理3 |
処理4
2. パイプの位置
改行した場合のパイプの位置について。
- 2-A. 合わせる
- 2-B. 合わせない
2-A. 合わせる
var=$(
処理1 |
処理10 |
処理11
)
2-B. 合わせない
var=$(
処理1 |
処理10 |
処理11
)
私見
1. 改行
- 40文字までならA。
- それ以上はBかC。どちらかというとB。
- 変数への代入ならCか。
2. パイプの位置
- パイプの位置は合わせなくていいと思っている。
- 差が開きすぎるとパイプが見えなくなるため。