2023年8月2日发(作者:)
快速⼊门Shell脚本之条件判断语句与循环⽬录1.条件判断1.1基本语法1.2.常⽤的判断条件1.3.案例实例判断1.5 case语句2.循环2.1for循环⽐较 $ * 和$ @区别3.2 whlie循环相信⼤家已经对shell脚本有⼀定的了解了,⼤家对于shell脚本的条件判断语句⼀定⾮常期待。本篇博客,我们来聊⼀聊关于shell的条件判断语句与循环。1.条件判断1.1基本语法[condition]注意:condition前后要有空格条件⾮空既为true,[atguigu]发回true,[]返回false1.2.常⽤的判断条件(1)两个整数之间⽐较 = 字符串⽐较-lt ⼩于(less than) -le ⼩于等于(less equal)-eq 等于(equal) -gt ⼤于(greater than)-ge ⼤于等于(greater equal) -ne 不等于(Not equal)(2)按照⽂件权限进⾏判断-r 有读的权限(read)-w 有写的权限(write)-x 有执⾏的权限(execute)(3)按照⽂件类型进⾏判断-f ⽂件存在并且是⼀个常规的⽂件(file)-e ⽂件存在(existence)-d ⽂件存在并是⼀个⽬录(directory)1.3.案例实例23是否⼤于等于22 使⽤$?查看结果为true返回0[root@node01 shell]# [ 23 -ge 22 ][root@node01 shell]# echo $?0查看⽂件具体的权限 使⽤$?查看结果为true返回0[root@node01 shell]# [ -w ][root@node01 shell]# echo $?0查看某个⽬录下的⽂件是否存在 使⽤$?查看结果为true返回0[root@node01 shell]# [ -e /opt/shell/ ] --不存在[root@node01 shell]# echo $?1[root@node01 shell]# [ -e /opt/shell/ ][root@node01 shell]# echo $?0多条件判断(&&表⽰前⼀条命令执⾏成功是,才执⾏后⼀条命令,||表⽰上⼀个命令执⾏失败后,才执⾏下⼀条命令)[root@node01 shell]# [ condition ] && echo ok || echo notOKok[root@node01 shell]# [ condition ] && [ ] ||echo 判断1.4.1 基本语法if [条件判断式];then程序fi或者if [ 条件判断式 ] then 程序fi #结束符注意:[条件判断式],中括号和条件判断式之间必须有空格if后⾯要有空格1.4.2 案例实操输⼊⼀个数字,如果是1,则输出我是张三,如果为2,则输出我是李四,如果为其什么不输出。[root@node01 shell]# vim [ $1 -eq '1' ] then
echo '我是张三'elif [ $1 -eq '2' ] then
echo '我是李四'
fi[root@node01 shell]# sh 2我是李四[root@node01 shell]# sh 1我是张三[root@node01 shell]# sh 3[root@node01 shell]#1.5 case语句1.5.1 基本语法case $变量名 in "值1") 程序1 ;; "值2") 程序2 ;; "值n") 程序n ;; esac
注意事项:case ⾏尾必须为单词“in”,每⼀个匹配必须以右括号")"结束。双分好“;;”表⽰命令序列结束,相当于java找中的break。最后的“*)”表⽰默认模式,相对于java中的default。1.5.2 案例实操输⼊⼀个数字,如果是1,则输出班长,如果是2,则输出副班长,如果是其他,则输出⼈妖。[root@node01 shell]# vim
#!/bin/bashcase $1 in '1') echo '班长' ;; '2') echo '副班长' ;; '*')
echo '⼈妖' ;;esac
[root@node01 shell]# sh 1班长[root@node01 shell]# sh 2副班长[root@node01 shell]# sh 3⼈妖2.循环2.1for循环2.1.1基本语法1for ((初始值;循环控制条件;变量变化)) do
程序done
2.1.2 案例实操从1加到100**[root@node01 shell]# vim #!/bin/bashnum=0for((i=0;i<=100;i++)) do num=$[$num+$i]doneecho $num[root@node01 shell]# sh
50502.1.3基本语法2for 变量 in 值1 值2 值3 .. do 程序done
2.1.4实例实操打印所有输⼊的参数hie[root@node01 shell]# vim
#!/bin/bashfor i in $* do
echo " I love $i "done[root@node01 shell]# sh 张三 李四 I love 张三
I love 李四
⽐较 $ * 和$ @区别$ *和$ @都表⽰传递给函数或脚本的所有参数,不能被双引号“”包含是,都以$ 1.$ 2…$ n的形式输出所有参数。[root@node01 shell]# vim
#!/bin/basnfor i in $*do
echo " I love $i"donefor j in $@do
echo " I love $j"done[root@node01 shell]# sh 张三 李四 王五 I love 张三 I love 李四 I love 王五 I love 张三 I love 李四 I love 王五当他们被双引号“”包含时,“$*”会将所有的参数作为⼀个整体,以$1,$ 3...3...n的形式输出所有参数;“$@会将各个参数分开,以“$1”,“$2”,“3 ” . . . . “ 3”....“3”....“n”的形式输出所有参数。[root@node01 shell]# vim
#!/bin/bashfor i in "$*"do
echo " I love $i "donefor j in "$@"do echo " I love $j "done[root@node01 shell]# sh 张三 李四 王五 I love 张三 李四 王五
I love 张三
I love 李四
I love 王五
3.2 whlie循环3.2.1 基本语法while [提交判断式]do 程序done
3.2.2 案例实操从1加到100[root@node01 shell]# vim
#!/bin/bashnum=0i=1while [ $i -le 100 ]do num=$[$num+$i] i=$[$i+1]doneecho $num[root@node01 shell]# sh
5050到此这篇关于快速⼊门Shell脚本之条件判断语句与循环的⽂章就介绍到这了,更多相关Shell 条件判断语句与循环内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
发布者:admin,转转请注明出处:http://www.yc00.com/web/1690916181a462767.html
评论列表(0条)