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=]
我写了一个小的 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=]