shell script

コメント

# ここはコメント

変数定義

数値

HOGE=1
echo $HOGE

文字列

HOGE="HOGE"
echo $HOGE
HOGE="H
O
G
E"
echo $HOGE

出力(echo)

HOGE=1
echo $HOGE

日付書式

現在日時

yyyymmddHHMMSS

NOW=$(TZ=UTC-9 date '+%Y%m%d%H%M%S')
echo $NOW
# 2021.01.02 12:34:56に実行
# > 2021010212345620210119172510

ストリーム操作(sed:Stream Editor)

入力ストリームに対してテキスト変換などのデータ処理をおこなうために使用されるプログラムである。名称「sed」は「ストリームエディタ」を意味する英語「stream editor」に由来する。

-e --expression

スクリプトを指定する。

※省略可能

# 文字列の置換
sed -e "s/{検索文字列}/{置換後文字列}/" {ファイルパス}

--in-place -i オプション

# 文字列の置換をし、上書き保存
sed -i -e "s/{検索文字列}/{置換後文字列}/" {ファイルパス}

標準入出力の処理(tee)

上書き

echo "test" | tee {ファイルパス}

追記

echo "test" | tee -a {ファイルパス}

条件分岐

if

if {条件} then
# 処理1
else
# 処理2
fi

文字列を検索し、置換

if grep -q "{検索文字列}" {ファイルパス}; then
# 処理1
echo 検索結果なし
else
# 処理2
sed -i -e "s/{検索文字列}/{置換後文字列}/" {ファイルパス}
fi

case

echo 確認 yes / no
read confirm
case $confirm in
yes)
echo "YES"
;;
no)
echo "NO"
;;
*)
echo "その他"
;;
esac