Korn条件运算符不工作

时间:2016-12-17 02:06:53

标签: ksh

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

运行它时
ksh script.sh -1

它没有回应消息。

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

1 个答案:

答案 0 :(得分:2)

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

if [ ${1:-0} -lt 0 ] # $1 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

警告: ksh

可能不支持链接中提及的所有扩展