我如何检查/测试 2 个条件,然后执行我尝试过的特定命令列表,我尝试过,我尝试过,但我尝试过不起作用

我如何检查/测试 2 个条件,然后执行我尝试过的特定命令列表,我尝试过,我尝试过,但我尝试过不起作用

抱歉,如果这令人困惑。

这是脚本需要做的事情

我输入2个值。

数据库服务器名称=192.168.1.1

数据库架构=My_DB_schema

然后我需要一个方法来在这两个值存在时执行一些命令

样本是:

如果数据库服务器名称和数据库模式是

192.168.1.1  
My_DB_schema

执行

command 1
command 2
    

我尝试使用案例陈述,但我认为它只会测试一个条件。

谢谢

答案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

您应该能够通过这种方式匹配您感兴趣的任何组合。

您可以使用这两个“条件”(SERVERDB_NAME),也可以使用三个、四个或任意多个。

答案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

用户目录展示如何将两个变量连接成一个单身的string 然后如何使用case语句来测试这个字符串。我个人不会像你那样做理论上可以有像some:host和 之类的值my:name,并且您不知道字符串中的哪个部分来自哪个变量some:host:my:name在最一般的情况下。在您可以完全控制变量内容的情况下,这是一个更可接受的解决方案。

相关内容