■ はじめに
シェルスクリプトに関するメモ。
ファイルに関する処理あれこれ
https://dk521123.hatenablog.com/entry/2020/09/28/000000
目次
【1】文字列チェック 【2】エラーがあった場合、そこで打ち止める 【3】ユーザを切り替えるには... 【4】カレントディレクトリを取得するには... 【5】外部ファイルを読み込むには... 【6】外部シェルを使う
【1】文字列チェック
* -n string : string の長さが 0 より大きい場合、true (Nullでない場合true) * -z string : string の長さが 0 の場合、true (Nullならtrue)
【2】エラーがあった場合、そこで打ち止める
set -e
【3】ユーザを切り替えるには...
構文
su -l 【ユーザ】 -c "【コマンド】"
参考文献
https://daichan.club/linux/919
【4】カレントディレクトリを取得するには...
APP_HOME="`pwd -P`"
【5】外部ファイルを読み込むには...
構文
. [外部ファイルのパス]
サンプル
. /home/admin/input.txt
input.txt
USER=admin PASSWORD=password MESSAGE="Hello World!!"
input.sh
#!/bin/bash . ./input.txt echo "1) ${USER}" echo "2) ${PASSWORD}" echo "3) ${MESSAGE}" echo "4) ${DUMMY}"
出力結果
1) admin 2) password 3) Hello World!! 4)
【6】外部シェルを使う
メインのシェルから外部シェルを実行し、 その結果を環境変数に入れる
サンプル
コマンド例
$ ./main.sh S3_BUCKET_1 = s3-buket-sg001 S3_BUCKET_2 = s3-buket-sg002 S3_BUCKET_3 = s3-buket-sg003
main.sh
#!/bin/bash ENV="stage" export S3_BUCKET_1=`./get-value-by-env-n-key.sh ${ENV} 's3_bucket1'` export S3_BUCKET_2=`./get-value-by-env-n-key.sh ${ENV} 's3_bucket2'` export S3_BUCKET_3=`./get-value-by-env-n-key.sh ${ENV} 's3_bucket3'` echo "S3_BUCKET_1 = ${S3_BUCKET_1}" echo "S3_BUCKET_2 = ${S3_BUCKET_2}" echo "S3_BUCKET_3 = ${S3_BUCKET_3}"
get-value-by-env-n-key.sh
#!/bin/bash ENV="$1" KEY="$2" case "${ENV}" in prod) case "${KEY}" in s3_bucket1) RETURN_VALUE="s3-buket-pd001" ;; s3_bucket2) RETURN_VALUE="s3-buket-pd002" ;; s3_bucket3) RETURN_VALUE="s3-buket-pd003" ;; esac ;; stage) case "${KEY}" in s3_bucket1) RETURN_VALUE="s3-buket-sg001" ;; s3_bucket2) RETURN_VALUE="s3-buket-sg002" ;; s3_bucket3) RETURN_VALUE="s3-buket-sg003" ;; esac ;; dev | *) case "${KEY}" in s3_bucket1) RETURN_VALUE="s3-buket-${ENV}001" ;; s3_bucket2) RETURN_VALUE="s3-buket-${ENV}002" ;; s3_bucket3) RETURN_VALUE="s3-buket-${ENV}003" ;; esac ;; esac echo "${RETURN_VALUE}"
参考文献
https://hacknote.jp/archives/15359/
https://orebibou.com/2014/11/%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%A7%E5%A4%96%E9%83%A8%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E8%A8%98%E8%BF%B0%E3%81%95%E3%82%8C%E3%81%9F%E5%A4%89/
関連記事
シェル ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2014/10/23/005406
ファイルに関する処理あれこれ
https://dk521123.hatenablog.com/entry/2020/09/28/000000
setコマンド
https://dk521123.hatenablog.com/entry/2021/09/14/000000