抱歉,如果这令人困惑。
这是脚本需要做的事情
我输入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
。
您应该能够通过这种方式匹配您感兴趣的任何组合。
您可以使用这两个“条件”(SERVER
和DB_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
,在最一般的情况下。在您可以完全控制变量内容的情况下,这是一个更可接受的解决方案。