![我如何检查/测试 2 个条件,然后执行我尝试过的特定命令列表,我尝试过,我尝试过,但我尝试过不起作用](https://linux22.com/image/192981/%E6%88%91%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%2F%E6%B5%8B%E8%AF%95%202%20%E4%B8%AA%E6%9D%A1%E4%BB%B6%EF%BC%8C%E7%84%B6%E5%90%8E%E6%89%A7%E8%A1%8C%E6%88%91%E5%B0%9D%E8%AF%95%E8%BF%87%E7%9A%84%E7%89%B9%E5%AE%9A%E5%91%BD%E4%BB%A4%E5%88%97%E8%A1%A8%EF%BC%8C%E6%88%91%E5%B0%9D%E8%AF%95%E8%BF%87%EF%BC%8C%E6%88%91%E5%B0%9D%E8%AF%95%E8%BF%87%EF%BC%8C%E4%BD%86%E6%88%91%E5%B0%9D%E8%AF%95%E8%BF%87%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
抱歉,如果这令人困惑。
这是脚本需要做的事情
我输入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
,在最一般的情况下。在您可以完全控制变量内容的情况下,这是一个更可接受的解决方案。