🐷

シェルスクリプトを作成すると色々自動化できるよみたいな話

2021/07/09に公開

業務でコマンドのシェル化を行ったので軽くまとめておきます。

シェル化

.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もできると思う。


後は特筆して書くことはないですが、

前回の記事はここで使うことになったよーという話でした。


参考記事

https://qiita.com/ebisennet/items/573618ab827ce1660b0e

Discussion