其他1-判断传入的参数为0或整数的多种思路
一、判断字符串是否为整数的多种思路
1)使用sed加正则表达式
- 删除字符串中的所有数值,看字符串长度是否为0来判断
[ -n "`echo oldboy123|sed 's#[0-9]##g'`" ] && echo char || echo int
char
[ -n "`echo 345678123|sed 's#[0-9]##g'`" ] && echo char || echo int
int
2)用变量的子串替代方法
- 删除数值部分比较是否等于0
num=oldboy123;[ -z "`echo "${num//[0-9]/}"`" ] && echo int || echo char
char
num=345678123;[ -z "`echo "${num//[0-9]/}"`" ] && echo int || echo char
int
3)用变量的子串替代方法
- 删除非数值部分比较是本身
num=oldboy123;[ -n "$num" -a "$num" = "${num//[^0-9]/}" ] && echo int || echo char
char
num=456789123;[ -n "$num" -a "$num" = "${num//[^0-9]/}" ] && echo char || echo int
char
4)通过expr计算判断[推荐]
- expr进行整数计算,如果参与计算的是非整数,就会报错,查看返回值就能确定
expr oldboy + 0 &>/dev/null;echo $?
2expr 123 + 0 &>/dev/null;echo $?
0
5)通过双中括号的正则判断
- 具体用法man bash查看帮助
[[ oldboy123 =~ ^[0-9]+$ ]] && echo int || echo char
char
[[ 345678123 =~ ^[0-9]+$ ]] && echo int || echo char
int
二、判断字符串是否为0的多种思路
1) 使用字符串表达式-z和-n
[ -z "oldboy" ] && echo "zero" || echo "no zero"
2**)使用变量子串**
char=oldboy;[ ${#char} -eq 0 ] && echo "zero" || echo "no zero"
3)使用expr length函数判断
[ `expr length "oldboy"` -eq 0 ] && echo "zero" || echo "no zero"
4)使用wc -L参数统计
[ `echo oldboy|wc -L` -eq 0 ] && echo "zero" || echo "no zero"
5)使用awk length函数统计
[ `echo oldboy|awk '{print length}'` -eq 0 ] && echo "zero" || echo "no zero"
三、扩展:判断传入的参数个数是否满足要求
假如要求传入两个参数,则可以直接判断第二个参数是否为空,如果为空,则表示第二个参数不存在
[ -z $2 ] && echo "zero" || echo "no zero"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 三行代码完成国际化适配,妙~啊~
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?