Bashスクリプト

概要

Bashスクリプト作成の時にいつも調べてしまうのでまとめておく。

環境

macOS Mojave 10.14.5

変数の扱い

a='aaa'
echo ${a}

計算の仕方

two=$((3-1))
echo $(two)

if

bashの比較演算子は文字列と数値とで大きく異なる

文字列比較

=で比較する

a='aaa'
if [ ${a} = 'aaa' ]; then
    echo 'aaa'
elif [ ${a} = 'bbb' ]; then
    echo 'bbb'
else
    echo 'error'
    exit 0
fi

数値比較

-lt-gt-eqで比較する

a=3
if [ ${a} -lt 3 ]; then
    echo '${a} is less than 3'
elif [${a} -eq 3 ]; then
    echo '${a} is 3'
elif [${a} -gt 3 ]; then
    echo '${a} is greater than 3'
else
    echo 'else'
fi

ファイルの存在確認

-eはexistの略?

file='test.txt'
if [ ! -e ${file} ]; then
    echo '${file} not found'
    exit 0
fi

for

bashにリストという概念がない。基本は以下のように指定する。

for a in 1 2 3 4 5; do
    for b in {01..06}; do
        echo ${a} ${b}
    done
done

時間を取得

date %Y/%m/%d/%H:%M:%S

コマンドの出力を変数として取得

スクリプトを書くときはよく使う

time=`date +"%Y/%m/%d/%H:%M:%S"`

関数の定義

引数は${1}${2}のようにコマンドライン引数と同様に扱う。

echo_dir() {
    dir=${1}
    echo ${dir}
}

echo_dir 'test.txt'