🐷
シェルスクリプトを作成すると色々自動化できるよみたいな話
業務でコマンドのシェル化を行ったので軽くまとめておきます。
シェル化
.sh形式のファイルを作ることでシェルのファイルを作ることができる。
ざっくりいうと、
ここにターミナルであれこれ叩いて実行していたものを求めておけば、
コマンド一発叩くだけであとは自動化できるよというやつ。
実際作ったっぽいやつ
#!/bin/bash
## ユーザーとパスワード
basic_user='hogehoge'
basic_pass='hoge0216'
## scheme, authority
# develop
baseuri_develop='https://hoge.com'
# production
baseuri_production='https://hoge.pro.com'
# preview
baseuri_preview='https://hoge.pre.com'
# testing
baseuri_testing='https://hoge.test.com'
## for文処理用配列
array_baseuri=($baseuri_develop $baseuri_production $baseuri_preview $baseuri_testing)
## path
# 状態確認 API
status='/hoge.model.json'
# 処理の確認 API
confirm='/age.model.json'
# 処理完了 API
complete='/poge.model.json'
## json取得処理用配列
array_json=($status $confirm $complete)
## 既存jsonファイルの削除処理用配列
files=('status.json' 'confirm.json' 'complete.json')
## json生データ削除処理用配列
rm_json=('hoge.model.json' 'age.model.json' 'poge.model.json')
## 既存jsonファイルの削除処理
for file in ${files[@]};
do
if [ -e "./develop/files/json/${file}" ]; then
rm -rf "./develop/files/json/${file}"
fi
if [ -e "./production/files/json/${file}" ]; then
rm -rf "./production/files/json/${file}"
fi
if [ -e "./preview/files/json/${file}" ]; then
rm -rf "./preview/files/json/${file}"
fi
if [ -e "./testing/files/json/${file}" ]; then
rm -rf "./testing/files/json/${file}"
fi
done
## jsonの取得
count=1
for i in ${array_baseuri[@]};
do
## ルート分岐処理
dir=''
if [ $count = 1 ]; then
# develop
dir='./develop/files/json'
elif [ $count = 2 ]; then
# production
dir='./production/files/json'
elif [ $count = 3 ]; then
# preview
dir='./preview/files/json'
elif [ $count = 4 ]; then
# testing
dir='./testing/files/json'
fi
## json取得処理
for j in ${array_json[@]};
do
getUrl=$i$j
command="wget --http-user=${aem_basic_user} --http-password=${aem_basic_pass} -P ${dir} ${getUrl}"
echo $command
${command}
done
## jsonファイルの整形処理
pushd $dir
cat 'hoge.model.json' | jq '.' > 'status.json'
cat 'age.model.json' | jq '.' > 'confirm.json'
cat 'poge.model.json' | jq '.' > 'complete.json'
## json生データ削除処理
for rmj in ${rm_json[@]};
do
rm $rmj
done
popd
count=$((++count))
done
解説
ユーザー名とパスワード叩いて、
指定したディレクトリにAPIからjsonとってきたjsonを、
フォーマットして保存するよーというようなやつ。
#!/bin/bash
一番最初のおまじない
指定した種類のシェルの振る舞いになるよーというものらしい。
今回はbashで実装
多分zshもできると思う。
後は特筆して書くことはないですが、
前回の記事はここで使うことになったよーという話でした。
参考記事
Discussion