在 shell 中捕获来自 sqoop 导入的结果代码

Catch result code from sqoop import in shell

如何在 shell 中捕获 sqoop 导入的成功执行? 我想像这样执行后续导入:

result=$(sqoop import ...)

if [ $result > 0 ] ; then
    sqoop import ...
else
    exit 1
fi

(我知道这可以用 oozie 来完成,但是,出于各种原因我需要通过 shell 来完成)

您可以在 shell 脚本中尝试这种模式(例如 run_sqoop.sh)。

#!/bin/bash

sqoop import <rest-of-command-parameters>
result=$?
echo $result

if [ "$result" -eq 0 ] ; then
    echo "OK"
else
    echo "Fail"
    echo "Fixing and running again"
    sqoop import <updated-rest-of-command-parameters>
fi

使文件成为可执行文件

$ chmod 755 run_sqoop.sh

如果第一次导入成功,输出将是:

output-logs-from-sqoop-command-execution
:
0
OK

如果第一次导入失败,输出将是:

output-logs-from-first-sqoop-command-execution
:
1
Fail
Fixing and running again
output-logs-from-second-sqoop-command-execution
: