質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

  • Linux

    4033questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • シェルスクリプト

    111questions

【Linux】シェルスクリプトで、変数に代入したコマンドが実行されない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 227

hiyocco

score 10

シェルスクリプトで、コマンドを実行するときは、
実行コマンドを変数に入れて、その変数をechoコマンドで出力してから
コマンドを実行する流れにしています。

上記で、変数に代入したコマンドが実行されないです。

シェルスクリプトを書いたのが初めてでして、調べて出てくることは一通り行いました。。
原因及び解決方法をご存知の方、お知恵を貸してください。

なお、実行しているシェルファイルは全て同じフォルダにございます。

以下、詳細になります。

 ◇実行コマンド

$ sh ./main.sh rds_list.txt snapshot-dev-20180718

 ◇実行結果

$ sh ./main.sh rds_list.txt snapshot-dev-20180718
RDS_LIST: rds_list.txt
SNAPSHOT: snapshot-dev-20180718
======================================================
rds_instance: rds-dev-test-1
sh ./create_cluster_instance.sh rds-dev-test-1 snapshot-dev-20180718

======================================================
rds_instance: rds-dev-test-2
sh ./create_cluster_instance.sh rds-dev-test-2 snapshot-dev-20180718

 ◇引数に指定したファイル

 rds_list.txt

rds-dev-test-1
rds-dev-test-2

 ◇シェルスクリプト

 main.sh

#!/bin/bash

RDS_LIST=$1
SNAPSHOT=$2

echo "RDS_LIST: ${RDS_LIST}"
echo "SNAPSHOT: ${SNAPSHOT}"

while read rds_instance
do

  echo ======================================================
  echo "rds_instance: ${rds_instance}"

  cmd="sh ./create_cluster_instance.sh ${rds_instance} ${SNAPSHOT}" 
  echo ${cmd}
  ${cmd}

done < ${RDS_LIST}

 create_cluster_instance.sh

#!/bin/bash

echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
profile="aws-dev"

# set Cluster parameter
rds_cluster=`echo $1`-cluster
snapshot=$2
db_subnet_group_name="iotcld-dafdev-1"
vpc_security_group_ids="vpc_security_group_ids"
db_cluster_parameter_group_name="db_cluster_parameter_group"

# set Instance parameter
rds_instance=$1
db_instance_class="db.r3.2xlarge"
availability_zone="ap-northeast-1a"
db_parameter_group_name="db_parameter_group"
master_user_password="master_user_password"

# create the RDS cluster
cmd="aws --profile ${profile} rds restore-db-cluster-from-snapshot --engine aurora --db-cluster-identifier ${rds_cluster} --snapshot-identifier ${snapshot} --db-subnet-group-name ${db_subnet_group_name} --vpc-security-group-ids ${vpc_security_group_ids}"
echo ${cmd}
#${cmd}

#  # wait until the cluster's status changed into available.
#  while true
#  do
#
#    sleep 600
#
    cmd="aws --profile ${profile} rds describe-db-clusters --filters Name=db-cluster-id,Values=${rds_cluster}"
    echo ${cmd}
#    rds_status=`${_cmd} | jq -r '.DBClusters[0].Status'`
#    if [ ${rds_status} == "available" ];then
#        break
#    fi
#
#  done

# modify the cluster's parameter group
cmd="aws --profile ${profile} rds modify-db-cluster --db-cluster-identifier ${rds_cluster} --db-cluster-parameter-group-name ${db_cluster_parameter_group_name}"
echo ${cmd}
#${cmd}

# create an RDS instance
cmd="aws --profile ${profile} rds create-db-instance --engine aurora --db-cluster-identifier ${rds_cluster} --db-instance-identifier ${rds_instance} --db-instance-class ${db_instance_class} --availability-zone ${availability_zone} --db-parameter-group-name ${db_parameter_group_name} --no-multi-az --no-publicly-accessible --master-user-password 
 ${master_user_password}"
echo ${cmd}
#${cmd}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • otn

    2018/07/23 10:43

    実行部分がコメントになっていますが??実際のスクリプトを載せてください。

    キャンセル

回答 1

checkベストアンサー

0

eval ${cmd}


では?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Linux

    4033questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • シェルスクリプト

    111questions