简介
语法 | 描述 |
if | 条件语句 |
if else | 条件判断语句 |
if else-if else | 多条件判断语句 |
for | 循环执行命令 |
while | 循环执行命令 |
until | 直到条件为真时停止循环 |
case ... esac | 多选择语句 |
break | 跳出循环 |
continue | 跳出当前循环 |
1. for 循环
for语句,定量循环,可以遍历一个列表或数组中的元素一,并对每个元素执行相应的操作;
(1)for 循环示例:
#!/bin/bash
x=0
for ((i=1;i<100;i++))
dox=x[$x+$i]
done
echo "$x"
2. while 循环
while 循环可以根据条件重复执行一段代码;
(1)基本格式
#!/bin/bash
x=0
while [ ]
do
xxx
done
echo "$x"
(2) while 循环示例:
1 #!/bin/bash2 s=03 i=1 #定义循环变量4 while [ $i -le 100 ] #定义循环条件5 do6 s=$[$s+$i] #累加7 i=$[$i+1]8 done9 echo "$s"
3. if 判断
shell中的逻辑判断一般用if语句,if语句中通常用[]
来表示条件测试,可以比较字符串、判断文件是否存等。[ ] 中表达式两边与括号之间要有空格if语句是Linux中最基本的条件控制语句,与C、Python这些语言不同,判断语句后需要用 then 指明,结束部分用 fi 指明;
(1)基本格式:
#!/bin/bash
if [ ]
then
……
fi
if [ ]
then
……
fi
(2) if 判断语句示例
#!/bin/bash
a=$1
b=$2
if [ $a == $b ];thenecho "a and b is equal"
fi
if [ $a != $b ];thenecho "a and b is not equal"
fi
4. case 语句
case
语句用于执行多个条件测试,每个条件称为一个case
,并根据第一个匹配的条件执行相应的代码块;可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令;
(1)基本格式
#!/bin/bash
case $1 in
1)
echo " "
;;
2)
echo " "
;;
3)
echo " "
;;
*)
echo " "
;;
esac
如上所示,取值后面必须为单词in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;
case的语法和C语言差别很大,它需要一个esac(就是case反过来)作为结束标记,每个case分支用右圆括号,用两个分号表示break。
(2) case 语句示例
#输入两个值及运算符号实现任意四则运算
#!/bin/bash
read -p "input number:" a
read -p "input number:" b
read -p "input fuhao:" c
case $c in
+)let "result=$a+$b"
echo $result;;
-)let "result=$a-$b"
echo $result;;
/)let "result=$a/$b"
echo $result;;
*)let "result=$a*$b"
echo $result;;
esac
5. break 语句
break 语句用于跳出当前循环(for、while 或 until 循环),并终止循环的执行。
(1)break 语句示例
#!/bin/bashfor i in {1..10}
doif [ $i -eq 5 ]; thenbreakfiecho $i
done
常用的整数比较条件:
- -eq:等于。
- -ne:不等于。
- -gt:大于。
- -lt:小于。
- -ge:大于等于。
- -le:小于等于。
常见的字符串比较条件:
- =:等于。
- !=:不等于。
- -z:为空字符串。
- -n:非空字符串。
格式
- [ 字符串1 = 字符串2 ] 是否相同
- [ 字符串1 != 字符串2 ] 是否不相同
- [ -z 字符串 ] 是否为空
- [ -n 字符串 ] 字符是否存在