从SQL文件提取服务器主版本号遇脚本报错,求解决方案
从SQL Dump提取服务器主版本号的解决方案
错误根源
你碰到的[: awk: integer expression expected错误,是因为变量赋值用了数组语法(),而非正确的命令替换语法$(),导致sqlver没拿到awk的输出结果,后续test命令([)判断时变量内容不符合预期,触发整数表达式错误。
正确实现方式
方案1:修正awk赋值逻辑
把错误的数组赋值改成命令替换,直接提取主版本号:
sqlver=$(awk '/Server version/ { split($NF, a, "."); print a[1] "." a[2] }' _schemas.sql)
方案2:grep+cut组合提取
先通过grep拿到完整版本号,再用cut截取主版本部分:
# 单行完成提取 sqlver=$(grep -Poe "-- Server version \K.*" _schemas.sql | cut -d '.' -f 1,2)
方案3:grep正则直接匹配主版本号
用Perl正则直接捕获数字.数字的主版本格式,一步到位:
sqlver=$(grep -Poe "-- Server version \K\d+\.\d+" _schemas.sql)
验证结果
赋值后可以打印变量确认:
echo "主版本号:$sqlver"
确保后续判断逻辑中,sqlver是有效的版本字符串(如5.1),避免再次触发表达式错误。
内容的提问来源于stack exchange,提问作者lukederbyshire
相关产品推荐
相关产品推荐

