判断符号【】类似于test。但是【】有通配符及正则表达式,为了区分,利用【】来做判断时,前后都需要加空格来区分。又一个坑
【 -z "$HOME" 】;echo $?
例:
1 read -p "Please input (y/n):" yn
2 [ "$yn" == "Y" -o "$yn" == "y" ] && echo "OK,continue" && exit 0
3 [ "$yn" == "N" -o "$yn" == "n" ] && echo "Oh,interrupt" && exit 0
4 echo "i donnot know what your choice is " && exit 0
有几个要点。[]一定要加空格。这是必须的。 “$yn” == "Y" 也一定要加空格,否则只会打印 OK,continue。也就是说,没事加个空格没毛病。但是不要加空格的时候,千万不要加空格,上篇博客就是个例子。。。。这个坑一定要填实了。要不然,问题都找不到原因出在哪。
还有[]跟test完全是一样的,所以test那些判断啊什么的特殊控制,在这都可以用。例如上图例子中的-o。这个就是连接两个前后表达式任何一个成立都执行的意思,说白了就是 “或”
Shell script 的默认变数 ($0,$1...)
什么意思。意思就是某个shell script的先后执行某命令的顺序。图例
file /etc/init.d/network
/etc/init.d/network restart 这个后面跟着的restart就是命令,关键是,restart后面还可以跟很多命令,1 2 3 。。。script达成这个功能其实就是对参数设定好了一些变量的名称了。如下图
所以太才会依次执行,除了这些数字变量之外,我们还有一些比较特殊的变量来呼叫这些参数,如下图
例:
1 echo "The script name is ==> ${0}"
2 echo "total parameter number is ==> $#"
3 [ "$#" -lt 2 ] && echo "The number of parameter is less than 2. stop here."& & exit 0
4 echo "your whole parameter is ==>'$@'"
5 echo "the 1st parameter ==>${1}"
6 echo "the 2nd parameter ==>${2}"
执行结果如下
shift 参数偏移
shift+数字,代表你要拿掉的参数的数量。从第一个参数开始。这个到底有啥用???百度一下,查了一大顿,都是一堆shift的用法云云,至于意义和作用,压根就没有,如果有人看到我的疑问,不吝赐教。谢谢
多重判断 if then fi
几个要点
if xxxx ;then
aaaaa
fi 判断之后要加 ; then
if xxxxx ;then
aaaaa
else
bbbbbbbbbb
fi else后面什么都不要加
if xxxxx ;then
aaaaaa
elif xxxxxx;then
bbbbbbb
else
cccccccc
fi elif后面跟if一样,都要加 ;then
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix