拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如何从ShellScript中的Beeline获取连接状态?[复制]

如何从ShellScript中的Beeline获取连接状态?[复制]

白鹭 - 2022-03-08 1955 0 0
这个问题在这里已经有了答案 为什么在 Bash 中的 '[' 和 ']' 周围应该有空格? (4 个回答) 为什么要测验“$”?查看命令是否成功,反模式? (2 个回答) 昨天关门

我正在通过 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条件和交换thenelse子句中即可。

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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *