2017/06/04
Googleシェルスタイルガイドを要約してみた
Googleシェルスタイルガイドをベースに規約をまとめてみました。 ベースにしたのは以下。
- Googleシェルスタイルガイド
用途
小さいツールやスクリプト実行時のラップ程度に抑える。
100行超える場合はPython等の他言語を使うこと
ファイル名
- ファイル名はlowner_snake_case
- 例)snake_case.sh
ヘッダー
- シェバン: #!/bin/bash //Bashを明示する
- トップレベルコメント
- 定数or変数宣言
インデント
- 半角スペース2つ
標準出力、標準エラー出力
- エラーはSTDOUT(標準出力)ではなくSTDERR(標準エラー出力)に出力する
- 成功した時は何も返さない。
- エラー時は端的に原因だけを伝える。
- 正常時、異常時それぞれ簡単に区別出来るようにするため。
- echo “This is an error” 1>&2
クォート
- 変数置換が必要な時–>シングルクォート
- 変数置換が不要な時–>ダブルクォート
パイプ
1パイプなら1行。複数行なら改行して2スペース空けてパイプをつなげる。
# All fits on one line
command1 | command2
# Long commands
command1 \
| command2 \
| command3 \
| command4
定数
- UPPER_SNAKE_CASE(大文字スネークケース)
- 宣言時
- 例)readonly HISTORY_FILE=”/path/to/hist_file”
- 例)readonly HISTORY_FILE_NAME=”hist_file”
変数
- 環境変数
- 例) declare -xr VARIABLE=”PROD”
- グローバル変数
- 大文字始まり
- 例) Variable
- ローカル変数
- local宣言付きの小文字スネークケース
- グローバル名前空間の汚染を防ぐ意味で使う
- 例) local lowner_snake_case
- エクスポートする変数
- 大文字
関数
- function宣言する
- 関数名はlowner_snake_case(小文字スネークケース)
- 例)function cal_score_ave(){ return 0; }
- 関数は必ずreturnする。正常終了は0,異常終了は0以外。
- 全ての関数にコメントをつける。(概要、グローバル変数、引数、戻り値)
########################################################## # Cleanup files from the backup dir # Globals: # BACKUPDIR: # Arguments: # None # Returns: # None ########################################################## function cleanup() { return 0; }
- usage()関数をスクリプトに追記 ``` function usage() { cat «EOT Usage: $0 [-a] [-b] [-f filename] arg1 …
Description: hogehogehoge
Options: -a aaaaaaaaaa -b bbbbbbbbbb -f ffffffffff
EOT exit 1 } ```
その他注意事項
- set -uを必ずつける
その他参考
- コーディングスタイル
- http://shellscript.sunone.me/tips.html
- シェルスクリプトを書く時に気をつける九箇条
- http://qiita.com/b4b4r07/items/9ea50f9ff94973c99ebe
- シェルスクリプトのコーディングルール2014
- http://qiita.com/b4b4r07/items/62d56b7de2b9d6844bb5