這個問題在這里已經有了答案: 為什么在 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條件和交換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
順便說一句:始終在程式引數中使用雙引號變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/416941.html
標籤:
上一篇:動態'when'子句中的N個條件
下一篇:如何在hadoop中創建新用戶
