shell中的0 1与真假
在shell程序中,作为条件的退出状态码时,0(成功)表示真,非0表示假,这一点与C语言恰恰相反。
每个表达式或者Linux命令执行完退出的时候,都会返回一个退出状态码(exit status 0~255),if语句根据 [ ] 表达式执行的退出状态码进行判断,在所有的退出状态码中,0表示执行成功,1~255为退出的状态代号(详见下表)。所以,与C语言不同的就在这里,shell的if [ 1 ] 中整数 0 1 与C语言中的 while(1)用法并不相通,也就是说整数 0 1 作为退出状态码的时候,确实表示真假,但是并不能作为 if [ ] 的判断条件来用,虽然shell也是弱数据类型的语言。
即:作为条件的退出状态码时,0(成功)表示真,非0表示假
直接作为if []的判断条件if [ 1 ]时,任何数字都返回真
Linux常见的退出状态码:#
状态码: | 描述: |
0 | 命令成功结束 |
1 | 通用未知错误 |
2 | 误用shell命令 |
126 | 命令不可执行 |
127 | 没找到命令 |
128 | 无效退出参数 |
130 | 通过Ctrl + C 终止 |
#
shell中可以将 0 1 作为条件写入判断语句中吗?#
Bash是脚本语言,也就是一种弱编程语言。0 1 只表示返回状态码。
判断语句中不管写什么数字都返回真。因此shell中 while[ 1 ]与c语言while(1)循环的意思是不一样的,前者是因为判断语句中是数字,所以永真(注意while [ 0 ]也是真),后者是1代表true所以永真。
注:shell脚本中的[ ]条件语句两端必须有空格 即[空格conditon空格]
参考文章#
linux命令返回值的含义解析 - https://www.jb51.net/article/141998.htm
shell命令中的条件测试与判断语句 - https://www.cnblogs.com/chorm590/p/14864080.html
shell学习笔记(2)shell脚本 0 1 和真假 - https://blog.csdn.net/shGray/article/details/101354337
shell中的0 1与真假 - https://blog.csdn.net/appke846/article/details/80652465
shell真假01的真相 - https://blog.csdn.net/timo1160139211/article/details/74079553
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南