使用“-ne”和“!=”来评估KornShell(ksh)中的退出代码有什么区别?

时间:2014-01-07 18:05:15

标签: shell unix scripting ksh

以下两个KornShell(ksh)片段之间有什么区别,因为它们在测试期间的行为与完全相同?返回代码(例如,退出代码,返回状态,退出状态,returnCode)来自SQL * Plus命令,如果这很重要。

kornShellSnippet1.ksh

returnCode=${?}
    if [[ ${returnCode} -ne 0 ]]; then #successful command returns 0#

kornShellSnippet2.ksh

returnCode=${?}
    if [[ ${returnCode} != 0 ]]; then #successful command returns 0#

2 个答案:

答案 0 :(得分:4)

-ne是数字测试,!=是字符串测试。由于您知道$?是一个数字,因此使用数字测试是有意义的。

答案 1 :(得分:1)

据我所知-ne是支持向后兼容的遗留语法,而(至少在ksh双方括号内)!=等是本机ksh语法。

虽然比较数字,你不会使用算术语法吗?

let returnCode=${?}

if (( returnCode != 0 )); then #successful command returns 0#