shell中判断变量值是否存在在list中!!!

2 篇文章 0 订阅

一般在shell中判断值是否存在一个列表中时我们会第一想到case,比如这样:

abc(){
   echo "abc"
}
abb(){
   echo "abb"
}
case $1 in 
     abc)
        abc
     ;;
     abb)
        abb
     ;;
     *)
        echo "error"
     ;;
esac

case语句这样去执行还不如直接外部传入值里面直接执行$1...,case还是比较适用于交互脚本。

for的话遍历实现,效果更惨。

所以找到这个语法实现:

var=$1
abc(){
   echo "abc"
}
abb(){
   echo "abb"
}
list_name="abc abb"   ###定义list
if [[ "$list_name" =~ "$var" ]]
then
    ${var}
fi

这样传进来的值,直接全部去list里判断。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 可以使用以下脚本来判断表名是否存在: ``` #!/bin/bash # 定义变量 db_name="your_db_name" table_name="your_table_name" # 判断是否存在 result=$(db2 "select count(*) from syscat.tables where tabschema = 'your_schema_name' and tabname = '${table_name}'") if [ ${result} -eq 0 ]; then echo "Table ${table_name} does not exist in database ${db_name}." else echo "Table ${table_name} exists in database ${db_name}." fi ``` 其,需要修改的变量有: - `db_name`:数据库名称 - `table_name`:需要检查的表名 - `your_schema_name`:表所在的 schema 名称,一般为用户名 该脚本通过查询 `syscat.tables` 系统表来判断是否存在。如果查询结果为 0,表示表不存在;否则,表存在。 ### 回答2: 要判断DB2数据库是否存在某个表,可以使用shell脚本编写以下步骤: 1. 首先,连接到DB2数据库。可以使用以下命令: `db2 connect to <数据库名称> user <用户名> using <密码>` 2. 然后,使用`db2 list tables for <模式>` 命令列出指定模式下的所有表名。其,`<模式>`是指需要检查的数据库模式名称。 3. 将表名保存到一个临时文件,可以使用以下命令: `db2 list tables for <模式> > temp.txt` 4. 使用grep命令检查临时文件是否含有目标表名。可以使用以下命令: `grep -w "<目标表名>" temp.txt` - 如果返回结果为空,则说明数据库存在该表。 - 如果返回结果不为空,则说明数据库存在该表。 5. 在完成判断后,关闭与DB2数据库的连接。可以使用以下命令: `db2 connect reset` 需要注意的是,在使用以上步骤时,需要将`<数据库名称>`、`<用户名>`、`<密码>`、`<模式>`和`<目标表名>`替换为实际的数据库信息和目标表名。 以上就是使用shell脚本判断DB2数据库表名是否存在的步骤。 ### 回答3: 在DB2数据库,可以使用shell脚本来判断表名是否存在。下面是一个示例脚本: ``` #!/bin/bash # 设置DB2连接参数 export DB2CLP=**your_db2_cli_path** export DB2INSTANCE=**your_db2_instance_name** # 设置要查询的数据库和表名 db_name="**your_database_name**" table_name="**your_table_name**" # 使用db2命令连接数据库 db2 connect to $db_name >/dev/null 2>&1 # 检查表是否存在 db2 -x "SELECT TABNAME FROM SYSCAT.TABLES WHERE TABSCHEMA = UPPER('**your_schema_name**') AND TABNAME = UPPER('$table_name')" >/dev/null 2>&1 # 检查db2命令的返回值 if [ $? -eq 0 ]; then echo "表存在" else echo "表不存在" fi # 断开数据库连接 db2 connect reset >/dev/null 2>&1 ``` 请根据实际情况替换脚本的参数,并确保脚本的`DB2CLP`和`DB2INSTANCE`的值正确指向DB2的安装路径和实例名称。此脚本会连接到指定的数据库,然后通过查询`SYSCAT.TABLES`系统表来检查指定表名是否存在。如果表存在,则命令的返回值为0,否则为非零值。 注意:在脚本,需要使用实际的数据库和表名替换`**your_database_name**`、`**your_schema_name**`和`**your_table_name**`。同时,您需要将`**your_db2_cli_path**`和`**your_db2_instance_name**`分别替换为您的DB2 CLI的路径和实例名称。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值