LoginSignup
0
0

More than 1 year has passed since last update.

自分的シェルスクリプトガイド

Last updated at Posted at 2022-04-20

bashの前提

開発環境

  • vscodeで開発する
  • シェルのlinter ShellCheckの拡張機能を導入する

シェバング

#!/bin/bash -eu

オプション説明

e

コマンドに失敗(戻り値が0以外)した場合、エラーになって止まる。
予想外のコマンド失敗が発生したまま後続処理が進行し、取り返しのつかない事態となる事を防いでくれる。

一時解除

なんらかの理由により、コマンド失敗を許容しなければならない場合は、前後にset +e set -eを記載すると、一時的に制限解除と出来る。

set +e
command
set -e

ちなみに下記のようなコーディングをすれば、一時解除は不要でcommand1が失敗した場合も終了せずにcommand2が実行される。
※もしかしたら環境によって異なるかも。

command1 || command2
if ! command1; then
  command2
fi

u

宣言されていない変数を使おうとすると、エラーになって止まる。

remove_dir="hoge"
rm -rf "/directory/$remove_dire" # タイポ

みたいにタイポした場合、上位ディレクトリからごっそり消える事故から守ってくれるので安心。

全体構成

原則、下記の構成をとる。
関数が無いような、単純なシェルの場合はmain関数を定義せずに書く場合もあり。

#!/bin/bash -eu

# 定数

# 関数

# メイン
main() {
  # メインの処理
}

main "$@"

変数

定数

アッパースネークケース
readonlyとする

readonly SAMPLE_CONSTANT="hoge"

変数

スネークケース

sample_variable="hoge"

ローカル変数

関数内でしか使わない変数はlocalを付与しローカル変数とする。
変数名は先頭にl_を付与する。

local l_variable="hoge"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0