混乱していたらすみません。
これがスクリプトが実行する必要がある作業です。
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
。
この方法で関心のある組み合わせを一致させることができるはずです。
SERVER
2つの「条件」(および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
。最も一般的なケース。これは、変数の内容を完全に制御できる状況でより適切なソリューションです。