シェルスクリプト
#!/bin/bash
変数
table:変数
$0 スクリプト名
$# スクリプトに与えた引数の数
$? 直前実行したコマンドの終了値
0→成功、1→失敗
$@ 全部の引数
$$ コマンド自身のPID。 echo $$
存在しないファイルも全部まとめて生成してくれる
mkdir -p
変数の初期化にifを使わない
hoge=${1:-default}
DATE=${2:-$(TZ=Asia/Tokyo date "+%Y-%m-%d")}
配列を作成する
array=()
code:shell
foo=a,b,c,d,f,e,g
list=(${foo//,/ })
forループ
code:shell
for i in 1 2 3; do echo $i; done
for i in {1..3}; do echo $i; done
for (( i=1; i<4; i++ )); do echo $i ; done
array=(1 2 3); for i in ${array@}; do echo $i;done code:bash
for ((i=1;i<=10;i++)) ; do
echo "${i}"
done
bashの機能でCっぽい感じで書ける
何もしないコマンド:
code:shell
echo "デフォルトモード開始"
else
# カスタムモード:あとで書く
:
fi
仮置きしたり
code:shell
# こう書くよりも
parameter=word
fi
# こう書くよりも
parameter=${parameter:-word}
# こう書いたほうが簡潔
: ${parameter:=word}
副作用のためにつかったり
エラーがあったら途中で処理を打ち止めてシェルスクリプト全体を終了
set -e
途中でエラー起こったのに最後まで突っ走るのを止めれる
set +e
で途中から元に戻すこともできる
未定義の変数を使おうとした途端に打ち止めてくれる
set -u
実行するコマンドを出力
set -x
Tips
!でコマンドの終了コードを反転できる
https://gyazo.com/e3e921aeda00962229ab9ccad7a2247f