如何从 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
.
我有这个 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
.