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

时间:2017-01-09 07:09:14

标签: linux bash shell hbase hdfs

我有这个bash脚本,我需要检查是否存在hbase表,因此我需要打印消息。以下是我的尝试。

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

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

1 个答案:

答案 0 :(得分:2)

这个想法是正确的,你将变量值传递给脚本的方式是错误的,应该是,

base_table_name="test" sh test.sh

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

FOO=bar somecommand someargs

如果您的返回代码对于所有情况都不正确,您可以尝试直接搜索命令输出,如

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的返回代码应满足if-clause。< / p>