■ はじめに
シェルスクリプトに関するメモ。
ファイルに関する処理あれこれ
https://dk521123.hatenablog.com/entry/2020/09/28/000000
目次
【1】文字列チェック 【2】カレントディレクトリを取得するには... 【3】外部ファイルを読み込むには... 【4】外部シェルを使う
【1】文字列チェック
* -n string : string の長さが 0 より大きい場合、true (Nullでない場合true) * -z string : string の長さが 0 の場合、true (Nullならtrue)
【2】カレントディレクトリを取得するには...
APP_HOME="`pwd -P`"
【3】外部ファイルを読み込むには...
1)構文
. [外部ファイルのパス]
2)サンプル
. /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)
【4】外部シェルを使う
メインのシェルから外部シェルを実行し、 その結果を環境変数に入れる
サンプル
コマンド例
$ ./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
シェル ~ 環境変数 IFS ~
https://dk521123.hatenablog.com/entry/2024/01/24/234634
シェル ~ Shebang ~
https://dk521123.hatenablog.com/entry/2024/02/02/000000
ファイルに関する処理あれこれ
https://dk521123.hatenablog.com/entry/2020/09/28/000000
setコマンド
https://dk521123.hatenablog.com/entry/2021/09/14/000000
Linux ~ ユーザに関わるコマンド ~
https://dk521123.hatenablog.com/entry/2016/06/26/233349
Linux ~ 権限/所有 に関わるコマンド ~
https://dk521123.hatenablog.com/entry/2016/06/10/233349
Linux ~ 環境変数あれこれ ~
https://dk521123.hatenablog.com/entry/2015/07/16/103501