如果条件进入内部,甚至我的返回值为0

时间:2018-01-12 06:16:54

标签: shell if-statement

<selection required>
    <option disabled value=“”>Select a language</option>
    <option>English</option>
    <option>Spanish</option>
</selection>

在上面的代码中,sqlplus system/root @orcl<<END SET SERVEROUTPUT ON VAR RET NUMBER EXEC :RET := 1 EXEC :RET := ${CREATE_FUNCTION}('${WKDir}','${WKFile}', ${DAYS}) EXIT :RET END Rtn=$? echo The value is $Rtn if[[ ${Rtn} != 0 ]] then echo "Error" exit 1 fi echo "RRRRRRRRRRRRRRRRR" ######################################################################### # PL/SQL コ・・ツケヤ ######################################################################### sqlplus system/root @orcl<<END SET SERVEROUTPUT ON VAR RET NUMBER EXEC :RET := 1 EXEC :RET := ${DELETE_FUNCTION}('${WKDir}','${WKFile}', ${COMMIT_CNT}) EXIT :RET END 的值为Rtn。但它正在进入if条件并打印&#34;错误&#34;。我需要继续使用pl / Sql代码。

2 个答案:

答案 0 :(得分:0)

修改您的脚本如下,它应该工作。

Rtn=$?
echo The value is $Rtn
    if [ ${Rtn} != 0 ]; then
        echo "Error"
        exit 1
    fi
echo "RRRRRRRRRRRRRRRRR"

答案 1 :(得分:0)

默认情况下,shell脚本在出错时不会终止,它只是向stderr输出错误消息并继续执行后续命令。 (可以通过脚本开头的set -e更改此行为。)

在你的情况下(如评论中已经提到的)if[[不是if的正确语法(缺少空格),shell将其解释为命令的名称,没有在您的系统中使用此名称的命令,因此shell会抛出类似的错误:

./test.sh: line 6: if[[ 0 != 0 ]]: command not found

...并继续执行接下来的两个命令:

echo "Error"
exit 1

为了好奇,您可以创建一个名为if[[的可执行文件(它可能只是echo hello world)并将其放在PATH中的某个位置。您的脚本将执行它。