KSH脚本函数参数校验问题:if语句无法识别-s参数
KSH函数if语句失效问题解决
你的问题核心是命令行参数没有传递到函数内部:
- 执行
ksh chris_test.sh -s时,-s是传给脚本本身的参数,而非STATUS函数 - 脚本最后调用
STATUS时没有传递任何参数,导致函数内的$1为空,因此始终进入else分支
修复方法
把脚本收到的命令行参数传递给函数即可,修改脚本最后一行的函数调用:
# 传递所有脚本参数给函数 STATUS "$@"
如果只需要传递第一个参数,也可以写:
STATUS "$1"
修改后的完整脚本
STATUS() { if [[ $1 == "-s" ]];then echo "--------------------------------------------------------" echo "Test success at: `date`" echo "--------------------------------------------------------" else echo "--------------------------------------------------------" echo "Test fail at: `date`" echo "--------------------------------------------------------" fi } STATUS "$@"
你之前尝试的转义引号、修改括号等操作都是针对语法的调整,但没有解决参数传递的核心问题,所以无法生效。
内容的提问来源于stack exchange,提问作者Christopher Karsten
相关产品推荐
相关产品推荐

