1、case语句作用 case语句用于多种情况的条件判断,当满足某种条件时,就会执行条件下的语句 2、case语法 case 变量 in 字符串1) 语句列表1 ;; 字符串2) 语句列表2 ;; …. 字符串n) 语句列表n ;; *) 默认执行的语句 ;; esac 3、case语句执行流程 4、case语句举例 [iyunv@test~]#vi testcase.sh#根据不同的输入,显示不同的结果 #!/bin/bash #Thisis a test case shell read-p "please input a number (1-4):" num case$num in 1) echo"your input number is 1" ;; 2) echo"your input number is 2" ;; 3) echo"your input number is 3" ;; 4) echo"your input number is 4" ;; *) echo"your input number is wrong!" ;; Esac [iyunv@test~]#sh testcase.sh#测试结果 pleaseinput a number (1-4):1 yourinput number is 1 [iyunv@test~]#sh testcase.sh pleaseinput a number (1-4):6 yourinput number is wrong!
循环语句
1、for…done语句 1) for…done语句执行过程 每次循环都会在列表中取值,然后执行do后面的语句,直至列表中的所有值全部取完后循环结束 2)for…done语句语法 for 变量 in 取值列表 do 语句列表 done ##取值列表可以是文件、范围或者指定的值 3)for…done语句举例 (1) 取值列表为文件 [iyunv@test~]#echo aaabbb ccc ddd> test.txt [iyunv@test~]#vi file_for1.sh#在列表中取值,然后打印出来 #!/bin/bash #Thisis a test for..done shell1 file=`cat/root/test.txt` foriin $file do echo$i done [iyunv@test~]#sh file_for1.sh#测试结果 aaa bbb ccc ddd (2) 取值列表为范围 [iyunv@test~]#vi file_for2.sh#测试网段内主机存活情况 #!/bin/bash #Thisis a test for..done shell2 PREFIX=10.0.1. foriin {200..210} do echo-n "${PREFIX}$i " ping-c1 -i0.1 ${PREFIX}${i} >/dev/null2>&1 if ["$?" -eq0 ];then echo"OK" else echo"Failed" fi done [iyunv@test~]#sh file_for2.sh#测试结果 10.0.1.200OK 10.0.1.201OK 10.0.1.202Failed 10.0.1.203Failed 10.0.1.204Failed 10.0.1.205OK 10.0.1.206OK 10.0.1.207OK 10.0.1.208Failed 10.0.1.209Failed 10.0.1.210Failed 还可以用下面这种方式表示 [iyunv@test~]#vi file_for3.sh#计算1到100的和 #!/bin/bash #Thisis a test for..done shell3 ans=0 for((i=1;i<=100;i++)) do letans+=$i done echo$ans [iyunv@test~]#sh file_for3.sh#测试结果 5050 (3)取值列表为指定的值 [iyunv@test~]#vi file_for4.sh #循环打印列表内的数值 #!/bin/bash ##Thisis a test for..done shell4 foriin "123" "456" "789" do echo$i done [iyunv@test~]#sh file_for4.sh#测试结果 123 456 789 2、while语句 1)while语句执行过程 每次循环都会判断while后面的条件是否成立,如果成立执行do后面的语句,如果不成立则循环结束 2)while语法 while 条件 ##条件可以使用布尔值 do 语句列表 done 3)while语句举例 [iyunv@test~]#vi while.sh#循环打印满足条件的结果 #!/bin/bash #Thisis a test while shell x=1 while[ $x -le 10 ] do echo$x letx=x+1 done [iyunv@test~]#sh while.sh#测试结果 1 2 3 4 5 6 7 8 9 10
使用(()) 扩展shell中算数运算使用方法
1、双括号的作用 1)整数扩展。这种扩展计算是整数型的计算,不支持浮点型。((exp))结构扩展并计算一个算术表达式的值,如果表达式的结果为0,那么返回的退出状态码为1,或者 是"假",而一个非零值的表达式所返回的退出状态码将为0,或者是"true"。若是逻辑判断,表达式exp为真则为1,假则为0。 2)只要括号中的运算符、表达式符合C语言运算规则,都可用在$((exp))中,甚至是三目运算符。作不同进位(如二进制、八进制、十六进制)运算时,输出结果全都自动转化成了十进制。如:echo $((16#5f)) 结果为95 (16进位转十进制) 3)单纯用 (( )) 也可重定义变量值,比如 a=5; ((a++)) 可将 $a 重定义为6 4)常用于算术运算比较,双括号中的变量可以不使用$符号前缀。括号内支持多个表达式用逗号分开。只要括号中的表达式符合C语言运算规则,比如可以直接使用for((i=0;i<5;i++)), 如果不使用双括号, 则为for i in `seq 0 4`或者for i in {0..4}。再如可以直接使用if (($i<5)), 如果不使用双括号, 则为if [ $i -lt 5 ]。 2、双括号的语法 ((表达式1;表达式2…)) 3、双括号举例 [iyunv@test~]#vi shuangkuohao.sh ##列出小于100的2的幂值 #!/bin/bash #Thisis a test (()) shell echo"The while loop example." echo VAR1=1 while((VAR1<100)) do echo"Value of the variable is : $VAR1" ((VAR1=VAR1*2)) done echo echo"The loop execution is finished" [iyunv@test~]#shshuangkuohao.sh#测试结果 Thewhile loop example. Valueof the variable is : 1 Valueof the variable is : 2 Valueof the variable is : 4 Valueof the variable is : 8 Valueof the variable is : 16 Valueof the variable is : 32 Valueof the variable is : 64 Theloop execution is finished
循环语句嵌套
举例: [iyunv@test~]#visanjiao.sh#循环嵌套用指定符号打印出三角形 #!/bin/bash #Thisis a test Loop nest shell read-p "Please enter the number of rows to print:" line read-p "Please enter the characters Print:" char a=1 while[ $a -le $line ] #外循环控制打印出的行数 do b=1 while [ $b -le $a ] #内循环控制每行打印的个数 do echo -n "$char" #-n为输出的内容不换行 b=` expr $b + 1 ` done echo a=`expr$a + 1` done [iyunv@test~]#shsanjiao.sh#测试结果 Pleaseenter the number of rows to print:5#输入打印的行数 Pleaseenter the characters Print:* #输入要打印的符号 * ** *** **** *****
跳出循环:break和continue
1、break和continue在循环语句中的作用 break:跳出整个循环 continue:跳出本次循环,进行下次循环 举例: [iyunv@test~]#vitest.sh#输入一个指定的数字,如果输入错误则重新输入,只有在输入正确的数字才会退出 #!/bin/bash #Thisis test break continue shell while[ ture ] do read-p "please input a number:" num if [$num -eq 0 ] ; then echo"you input is ok!" break else echo"please input again!" continue fi done [iyunv@test~]#shtest.sh#测试结果 pleaseinput a number:1 pleaseinput again! pleaseinput a number:2 pleaseinput again! pleaseinput a number:0 youinput is ok!