Korn 条件运算符不工作

Korn conditional operator not working

我写了一个小的 korn 脚本,但是当我尝试 运行 脚本时,它不会回显我想要显示的消息。当我尝试 运行 它时

ksh script.sh -1

它没有回显消息。

if [ $# -le 0 ]
    then
        echo "That is a negative integer!"
    exit
fi

在bash/ksh中$#表示作为参数传递的参数个数。 你需要的是

if [ ${1:-0} -lt 0 ] #  is the first parameter
    then
        echo "That is a negative integer!"
    exit
fi

或上述的简化版本

[ ${1:-0} -lt 0 ] && echo "That is a negative integer!" && exit

编辑 1

  • 我用过 shell [ parameter expansion ] ${1:-0} 提供默认值。
  • 由于从技术上讲零不是负数,因此将 -le 替换为 -lt

编辑 2

如果您希望匹配特定字符串,请执行以下操作

[ ${1:-NULL} =  "StringToMatch" ] && DoSomething

如果您要查看输出是否只有至少一个非数字字符,请执行如下操作

[[ {1:-NULL} =~  [^[:digit:]]+ ]] && DoSomething

警告:并非link中提到的所有扩展都可能不受ksh[=支持20=]