我正在通过 shellscript 的直线执行 Hive 查询。下面是代码示例:我看到即使与 Hive 数据库的连接失败,$? 仍将回传零作为退出代码。 对于如下用例,如何从直线获取退出代码/连接状态? 一旦beeline无法连接到数据库,我需要停止执行shellscript,并且应该记录一条正确的讯息,提示Hive Connection失败。
beeline -u $HIVE_CONNECTION_STRING --outputformat=csv2 -f $LOCATION_OF_HIVE_SELECT_QUERY_FILE > QueryResults.csv
if [$? -ne 0]; then
echo "Could not connect to DB."
exit 1
else
#Do rest of the process since data was fetched from DB successfully above
fi
uj5u.com热心网友回复:
我认为你有一个- ne
不应该的空白。试试这个-ne
:
beeline -u $HIVE_CONNECTION_STRING --outputformat=csv2 -f $LOCATION_OF_HIVE_SELECT_QUERY_FILE > QueryResults.csv
if [$? -ne 0]; then
echo "Could not connect to DB."
exit 1
else
#Do rest of the process since data was fetched from DB successfully above
fi
uj5u.com热心网友回复:
您不需要使用$?
. 只需将命令放入if
条件和交换then
和else
子句中即可。
if beeline -u "$HIVE_CONNECTION_STRING" --outputformat=csv2 -f "$LOCATION_OF_HIVE_SELECT_QUERY_FILE" > QueryResults.csv
then
#Do rest of the process since data was fetched from DB successfully above
else
echo "Could not connect to DB."
exit 1
fi
顺便说一句:始终在程序自变量中使用双引号变量。
0 评论