快速入门Shell脚本之条件判断语句与循环
相信大家已经对shell脚本有一定的了解了,大家对于shell脚本的条件判断语句一定非常期待。本篇博客,我们来聊一聊关于shell的条件判断语句与循环。
1.条件判断
1.1基本语法
[condition]
注意:
- condition前后要有空格
- 条件非空既为true,[atguigu]发回true,[]返回false
1.2.常用的判断条件
(1)两个整数之间比较=字符串比较
- -lt小于(lessthan)-le小于等于(lessequal)
- -eq等于(equal)-gt大于(greaterthan)
- -ge大于等于(greaterequal)-ne不等于(Notequal)
(2)按照文件权限进行判断
- -r有读的权限(read)
- -w有写的权限(write)
- -x有执行的权限(execute)
(3)按照文件类型进行判断
- -f文件存在并且是一个常规的文件(file)
- -e文件存在(existence)
- -d文件存在并是一个目录(directory)
1.3.案例实例
23是否大于等于22使用$?查看结果为true返回0
[root@node01shell]#[23-ge22] [root@node01shell]#echo$? 0
查看文件具体的权限使用$?查看结果为true返回0
[root@node01shell]#[-whelloword.sh] [root@node01shell]#echo$? 0
查看某个目录下的文件是否存在使用$?查看结果为true返回0
[root@node01shell]#[-e/opt/shell/aa.txt]--不存在 [root@node01shell]#echo$? 1 [root@node01shell]#[-e/opt/shell/helloword.sh] [root@node01shell]#echo$? 0
多条件判断(&&表示前一条命令执行成功是,才执行后一条命令,||表示上一个命令执行失败后,才执行下一条命令)
[root@node01shell]#[condition]&&echook||echonotOK ok [root@node01shell]#[condition]&&[]||echonotOk notOk
1.4.if判断
1.4.1基本语法
if[条件判断式];then 程序 fi 或者 if[条件判断式] then 程序 fi#结束符
注意:
- [条件判断式],中括号和条件判断式之间必须有空格
- if后面要有空格
1.4.2案例实操
输入一个数字,如果是1,则输出我是张三,如果为2,则输出我是李四,如果为其什么不输出。
[root@node01shell]#vimif.sh if[$1-eq'1'] then echo'我是张三' elif[$1-eq'2'] then echo'我是李四' fi [root@node01shell]#shif.sh2 我是李四 [root@node01shell]#shif.sh1 我是张三 [root@node01shell]#shif.sh3 [root@node01shell]#
1.5case语句
1.5.1基本语法
case$变量名in "值1") 程序1;; "值2") 程序2;; "值n") 程序n;; esac
注意事项:
- case行尾必须为单词“in”,每一个匹配必须以右括号")"结束。
- 双分好“;;”表示命令序列结束,相当于java找中的break。
- 最后的“*)”表示默认模式,相对于java中的default。
1.5.2案例实操
输入一个数字,如果是1,则输出班长,如果是2,则输出副班长,如果是其他,则输出人妖。
[root@node01shell]#vimcase.sh #!/bin/bash case$1in '1') echo'班长';; '2') echo'副班长';; '*') echo'人妖';; esac [root@node01shell]#shcase.sh1 班长 [root@node01shell]#shcase.sh2 副班长 [root@node01shell]#shcase.sh3 人妖
2.循环
2.1for循环
2.1.1基本语法1
for((初始值;循环控制条件;变量变化)) do 程序 done
2.1.2案例实操
从1加到100
**[root@node01shell]#vimfor1.sh #!/bin/bash num=0 for((i=0;i<=100;i++)) do num=$[$num+$i] done echo$num [root@node01shell]#shfor1.sh 5050
2.1.3基本语法2
for变量in值1值2值3.. do 程序 done
2.1.4实例实操
打印所有输入的参数
hie[root@node01shell]#vimfor2.sh #!/bin/bash foriin$* do echo"Ilove$i" done [root@node01shell]#shfor2.sh张三李四 Ilove张三 Ilove李四
比较$*和$@区别
$*和$@都表示传递给函数或脚本的所有参数,不能被双引号“”包含是,都以$1.$2…$n的形式输出所有参数。
[root@node01shell]#vimfor3.sh #!/bin/basn foriin$* do echo"Ilove$i" done forjin$@ do echo"Ilove$j" done [root@node01shell]#shfor3.sh张三李四王五 Ilove张三 Ilove李四 Ilove王五 Ilove张三 Ilove李四 Ilove王五
当他们被双引号“”包含时,“$*”会将所有的参数作为一个整体,以$1,$2,3...3...3...n的形式输出所有参数;“$@会将各个参数分开,以“$1”,“$2”,“3”....“3”....“3”....“n”的形式输出所有参数。
[root@node01shell]#vimfor4.sh #!/bin/bash foriin"$*" do echo"Ilove$i" done forjin"$@" do echo"Ilove$j" done [root@node01shell]#shfor4.sh张三李四王五 Ilove张三李四王五 Ilove张三 Ilove李四 Ilove王五
3.2whlie循环
3.2.1基本语法
while[提交判断式] do 程序 done
3.2.2案例实操
从1加到100
[root@node01shell]#vimwhile.sh #!/bin/bash num=0 i=1 while[$i-le100] do num=$[$num+$i] i=$[$i+1] done echo$num [root@node01shell]#shwhile.sh 5050
到此这篇关于快速入门Shell脚本之条件判断语句与循环的文章就介绍到这了,更多相关Shell条件判断语句与循环内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!