随笔 - 129  文章 - 3  评论 - 32  阅读 - 15万 

判断符号【】类似于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

 

posted on   孤独斗士  阅读(407)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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
点击右上角即可分享
微信分享提示