2つの条件を確認/テストしてから、試した特定のコマンドのリストを実行するにはどうすればよいですか?試しましたが動作しません。

2つの条件を確認/テストしてから、試した特定のコマンドのリストを実行するにはどうすればよいですか?試しましたが動作しません。

混乱していたらすみません。

これがスクリプトが実行する必要がある作業です。

2つの値を入力します。

データベースサーバー名=192.168.1.1

データベーススキーマ=My_DB_schema

その後、これら2つの値が存在するときにいくつかのコマンドを実行する方法が必要です。

サンプルは次のとおりです

データベースサーバー名とデータベーススキーマが次の場合

192.168.1.1  
My_DB_schema

実装する

command 1
command 2
    

Caseステートメントを試してみましたが、1つの条件しかテストしないようです。

ありがとう

答え1

私が正しく理解しているかどうかはわかりませんが、複数の変数を連結できます(たとえば、値の一部ではないことがわかっている場合は、一部の区切り文字を使用:)。

例えば

SERVER=foo
DB_NAME=bar

case "$SERVER:$DB_NAME" in
  foo:bar)
    echo "foobar"
    ;;
  foo:*)
    echo "foo"
    ;;
  *:bar)
    echo "bar"
    ;;
esac

したがって、サーバーがあり、fooデータベースがある場合bar、サーバーがあり、データベースが何であれfoo、サーバーが何であってもデータベースがある場合がありますbar

この方法で関心のある組み合わせを一致させることができるはずです。

SERVER2つの「条件」(およびDB_NAME)、3つ、4つ、または必要に応じて使用できます。

答え2

素直に簡単にできます

db_name=...some-database-name...
db_host=...some-database-host...

if [ "$db_host" = '192.168.1.1' ] &&
   [ "$db_name" = 'My_DB_schema' ]
then
    command-1
    command-2
fi

ユーザーディレクトリ方法を見せて2つの変数を1つに連結一つ文字列を確認し、ステートメントcaseを使用してこの文字列をテストする方法を学びます。私は個人的にあなたがしたことをしません。理論的にsome:hostなどの値がある可能性があり、my:name文字列のどの部分がどの変数から来るのかわかりませんsome:host:my:name最も一般的なケース。これは、変数の内容を完全に制御できる状況でより適切なソリューションです。

関連情報