目次

変数

appdir=~/hogehoge/app
echo $appdir
echo ${appdir}_backup # 変数名の区切りを明示
  • =の前後にはスペースを入れない
  • 変数名に利用できる文字はアルファベット数値_(アンダースコア)

位置パラメータ

シェルスクリプトからコマンドライン引数を扱う

$ ./parameter.sh aaa bbb ccc
  • ./parameter.sh: $0
  • aaa: $1
  • bbb: $2
  • ccc: $3
  • 引数の個数(3): $#
  • 引数全体の参照: $@, $*
    • "$@": 位置パラメータがそれぞれ1つずつの文字列として展開
      • "$1" "$2" … "$N"
    • "$*": 引数全体が1つの文字列として展開
      • "$1 $2 … $N"
  • 終了ステータス: $?
    • 正常終了: 0
    • エラー時: 0以外の値

記法

if文

if <コマンド1>; then
  「処理」
elif <コマンド2>; then
  「処理」
elif <コマンド3>; then
  「処理」
else
  「処理」
fi

if [ "$1" = "bin" ]; then
[はシェルの組み込み関数
→ スペースをそれぞれ開ける必要がある

&&||

  • <コマンド1> && <コマンド2>
    • コマンド1が正常終了したときだけコマンド2を実行
    • ex) [ -f file.txt ] && cat file.txt
    • ファイルが存在すればcatコマンドを実行
  • <コマンド1> || <コマンド2>
    • コマンド1が正常終了しなかったときだけコマンド2を実行
    • ex) [ -f file.txt ] || touch file.txt
    • ファイルが存在しなければtaouchコマンドでファイルを作成

for文

for <変数名> in <リスト>
do
  「繰り返す処理」
done

ex) コマンドライン引数を1つずつ表示

for param in "$@"
do
  echo "$param"
done

よく書く記述

  • #!/usr/bin/env bash
    • $PATH上のbashが使われる
  • set -eu
    • -eオプション: エラーが起こった時点でスクリプトを中断してくれる
    • -uオプション: 未定義の変数を使おうとしたときに中断してくれる (タイポ等に○)
  • 変数名=${変数名:-xxx}
    • 変数のデフォルト値の定義
  • if [[ <条件> ]]