如何从 bash 脚本中检查 hbase table 是否存在

How to check if hbase table exists from a bash script

我有这个 bash 脚本,我需要从中检查 hbase table 是否存在,因此我需要打印消息。下面是我试过的。

doesTableExist=$(echo -e "exists '$base_table_name' | hbase shell")

if [ $? -eq 0 ]
then
    echo [BYOA_HIVE_INGEST] [INFO] "Table already exists"
else
    echo [BYOA_HIVE_INGEST] [ERROR] "Table does not exist"
fi

下面是我运行脚本的方式。

sh test.sh $base_table_name = test

但是这会打印出 table 一直存在,无论它是否存在。我在这里做错了什么?任何帮助将不胜感激。

思路是对的,你传递变量值给脚本的方式是错误的,应该是,

base_table_name="test" sh test.sh

设置一个或多个变量然后运行命令的一般语法类似于

FOO=bar somecommand someargs

如果您的 return 代码在所有情况下都不正确,您可以尝试直接搜索命令输出,例如,

if echo -e "exists '$base_table_name'" | hbase shell 2>&1 | grep -q "does exist" 2>/dev/null 
then
    echo "[BYOA_HIVE_INGEST] [INFO] Table already exists"
else
    echo "[BYOA_HIVE_INGEST] [ERROR] Table does not exist"
fi

使用-q标志和stderr重定向到NULL,如果找到字符串,grep的return代码应该满足if-clause.