【Shell】シェル ~ あれこれ編 ~

■ はじめに

シェルスクリプトに関するメモ。

ファイルに関する処理あれこれ
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