通过curl拉取Gitlab的bash脚本传参运行时报算术运算符错误,如何解决?
报错原因排查
let是Bash内置的整数算术运算专用命令,仅支持对合法整数值做运算处理,操作数不允许出现字母、小数点等非整数格式字符。- 你给脚本传递的第一个入参是字符串
domain.xyz,执行let a=$1时,Bash会尝试把domain.xyz当作整数解析,识别到非法的.xyz片段就直接抛出对应算术错误。
对照测试无报错的原因
你的对照测试脚本仅做字符串打印逻辑,没有任何算术运算操作,无论入参是什么格式的字符串都可以正常处理,自然不会触发算术类报错。
修复方案
根据你的实际使用场景二选一即可:
- 如果第一个参数本身就是要存域名这类字符串,直接删除
let关键词即可,普通变量赋值不需要算术运算修饰,修改后代码如下:
a="$1" b="$2"
- 如果是参数传递顺序错误,原本第一个参数要传端口号这类整数、第二个参数传域名,调整你执行命令的参数顺序即可。
内容的提问来源于stack exchange,提问作者codices
相关产品推荐
相关产品推荐

