shell:Linux易错点
- 判断变量是否相等,最好使用 != == ,而 -ne -eq -gt -lt -ge -le 适用于int类型比较
int和float使用-ne发生错误
int和float使用 != 没有问题
当变量不存在时的情况[ ]进行判断时,报错
替换成 != 和 == 正确
[[ ]]的情况:没有报错,但是结果完全错误
替换成 != == 结果正确
- [[ ]]与正则
[[ ]]可以使用正则,[ ]直接报语法错误 - bash中未定义变量和空变量几乎是等价的
但是我们还是有办法区别两者的
1:help set
在脚本一开始设置 set -u选项
2:
p不为空返回p
p为空返回空
p未定义,返回自定义错误信息上面的格式b为空或未定义都会返回自定义报错信息
-
${var:=value} 上述语法表示如果var为空,则返回value,并将value赋值给var,如果var不为空,则返回var本身的值,var不为空时,var值不会被改变,var为空时,var的值会被设置成指定值。 ${var:-value} 上述语法表示如果var为空,则返回value,如果var不为空,则返回var的值,无论var是否为空,var本身的值不会改变。 ${var:+value} 上述语法表示如果var不为空,则返回value,如果var为空,则返回空值,无论var是否为空,var本身的值不会改变。 ${var:?error_info} 上述语法表示如果var为空,那么在当前终端打印error_info,如果var的值不为空,则返回var的值,无论var是否为空,var本身的值都不会改变。
- bash为动态弱类型语言
上例中的字符串会自动被转换为int进行比较
记住一点: -eq -ne等只能用于数值比较
shell中 a 与 'a' "a"是等价的 - shell中比较字符串的ASCII码值必须使用 > <, [ ]中需要转义,[[ ]]不需要转义
- int 和 string进行比较时,string自动会被转为int进行比较
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律