bash備忘録
テストを回したりファイル加工したりと、シェルスクリプトを使うことが増えてきたので。
ループ
回数が決まっているときはseq
などを利用する。
# $(command) でコマンドの実行結果に置換 for i in $(seq 10); do echo ${i} done
for i in {1..10}; do echo ${i} done
配列の各要素についてループを回すこともできる。
array=(one two three) # array[@]で配列全要素を参照、空白文字を考慮してクォートする for i in "${array[@]}"; do echo ${i} done
$ for i in $(seq 10) ; do echo ${i} ; done
ファイルの存在を確認
ファイルがあるときのみ追記したり。
if [ -e file.txt ]; then echo "Append line" >> file.txt fi
空のファイルを作成する
echo
やtouch
が使える。
echo -n > file.txt # -n で改行しない
touch file.txt
出力を破棄する
"null device"や”bit bucket"などと呼ばれる特殊なデバイスファイル/dev/null
にリダイレクトする。
echo "hello" > /dev/null
整数演算
expr
を利用する方法もあるが、算術式展開$(())
のほうが高速に動作するらしい。
echo $((1 + 1)) echo $((1 - 2)) echo $((1 * 2)) echo $((1 / 2)) # 小数点以下切り捨て echo $((3 % 2)) # 剰余 echo $((10 ** 2)) # 階乗
変数も計算できる。
# 九九表の出力 for i in $(seq 9); do for j in $(seq 9); do printf "%3d" $((i * j)) done echo done
エラー時に処理を中断
-e
オプションをつけてスクリプトを実行するか、スクリプト先頭でset -e
とする。
調べたことを並べて書いただけになってしまった。