我有这个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
但是这会打印出表格一直存在,无论它是否存在。我在这做错了什么?任何帮助将不胜感激。
答案 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>