为何我的Shell脚本函数调用无法触发对应的目标函数?
问题分析与修复
你的bash脚本无法按预期调用函数,核心是两个语法错误导致的:
1. 函数调用写法错误
代码里的DecryptPassword()是定义函数的语法,不是调用函数。正确的调用方式是直接写函数名,不需要加括号,即DecryptPassword。
2. 条件判断的语法漏洞
[符号后面必须加空格,否则会触发语法错误- 变量
$2未加双引号,若参数为空或包含空格,会直接导致判断逻辑失效 - bash中
[结构推荐用=做相等判断,==属于bash扩展写法,兼容性不如=稳定;追求严谨性的话,也可以用[[ ... ]]结构
修正后的代码
# 调用解密密码函数 echo "country is: $2" if [ "$2" = MT ] then DecryptPassword InsertSCSTAR_AMH exit 0 fi if [ "$2" = MX ] then InsertSCSTAR_AMH fi
额外优化建议
- 如果脚本需要兼容更多shell环境,统一用
[ "$var" = "value" ]的判断格式更稳妥 - 可以在脚本开头添加
set -u,能快速定位变量未定义这类隐性问题
内容的提问来源于stack exchange,提问作者sibi sukanesh
相关产品推荐
相关产品推荐

