版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/play_chess_ITmanito/article/details/77967436
(1)if判断(结束用fi)
if判断:
语法:
if 条件
then 输出
fi
eg:
num1=2
num2=2
if [ ${num1} -eq ${num2} ];then
echo `expr ${num1} \* ${num2}`;fi
if-else判断:
语法:
if 条件
then 输出
else 输出
fi
eg:
cd /home/data
if test -e ./a.sh
then
echo 'The file already exists!'
else
echo 'The file does not exists!'
fi
if then- else if- else判断:(两次判断)
if 条件
then 输出
elif 条件
then 输出
else 输出
fi
eg 1:
#!/bin/bash
a=1
b=2
if [ $a == $b ]
then
echo "a等于b"
elif [ $a -lt $b ]
then
echo "a小于b"
elif [ $a -gt $b ]
then
echo "a大于b"
else
echo "不符合以上所有判断"
fi
结果:
[root@h data]# vi a.sh
[root@h data]# chmod +x ./a.sh
[root@h data]# ./a.sh
a小于b
eg 2:(if与test命令结合使用)----test测试:数值测试可用[];字符串测试必须用{}
n1=$[2*4]
n2=$[5+3]
if test $[n1] -eq $[n2]
then
echo "n1等于n2"
else
echo "两数字不一样"
fi
(2)for循环
语法:
for variable in item1 item2 item3....
do
输出
输出
....
输出
done
合并成一行:
for variable in item1 item2 item3....; do 输出;输出;....;输出;done
in后面可以跟任何替换、字符串、文件
eg:
echo "--------\例一:$*--------"
for i in "$*";do
echo $i
done
echo "--------\例二:$@--------"
for i in "$@";do echo $i;done
执行结果:
[root@h data]# /bin/sh ./t2.sh "a" "b" "c" "d"
--------\例一:a b c d--------
a b c d
--------\例二:a b c d--------
a
b
c
d
注:
无限循环
for((;;))
(3)while
通常用于处理大量的命令,或是从输入文件中读取数据信息;(命令通常指测试条件)
格式:
while 判断条件
do
输出
done
eg 1:
#!/bin/bash
i=1
while(($i<=5))
do
echo "$i"
let "i++"
done
无限循环:
(不可用)while
do
输出
done
或者
while true
do
输出
done
eg 2:
echo "What's your name?"
while read name
do
echo "My name is ${name}!"
done
(4)until
until 循环执行一系列命令直至条件为 true 时停止。until 循环与 while 循环在处理方式上刚好相反。一般while循环优于until循环,但在某些时候,也只是极少数情况下,until 循环更加有用。
语法:(循环至少执行一次)
until 条件
do
输出
done
条件: 一般为条件表达式,如果返回值为 false,则继续执行循环体内的语句,否则跳出循环。
eg:(使用 until 命令输出 0 ~ 9 的数字)
#!/bin/bash
echo "--------------until--------------------"
a=3
until [ ! $a -lt 6 ]
do
echo $a
a=`expr $a + 1`
done
echo "----------------while------------------------"
b=5
while(($b<=6))
do
echo $b
b=`expr $b + 1`
done
运行结果:
[root@h data]# /bin/sh d.sh
-------------until--------------------
3
4
5
----------------while-----------------
5
6
(6)case
语法:
case 值 in
模式1)
输出1
输出2
输出3
输出n;;
模式2)
输出1
输出2
输出3
输出n;;
esac
eg:
#!/bin/bash
echo "输入1到3之间的数字:"
echo "亲,输入的数字是:"
read num
case $num in
1)
echo "你选择了1";;
2)
echo "你选择了2";;
3)
echo "你选择了3";;
*)
echo "你没有输入1到3之间的数字";;
esac
(7)跳出循环
break和continue:
break命令
跳出所有循环(终止执行后面操作)
continue命令
不跳出所有循环,仅仅跳出当前循环
eg:
#!/bin/bash
echo "输入1到3之间的数字:"
echo "亲,输入的数字是:"
read num
while true
do
case $num in
1|2|3)
echo "你选择了$num";;
*)
echo "你没有输入1到3之间的数字";
continue
echo "over!"
;;
esac
done
eg2:
#!/bin/bash
while true
do
echo "输出1~5之间的数字:"
echo "请输入输出的数字是"
read num
case $num in
1|2|3|4|5)
echo "你选择了$num";;
*)
echo "只能输入1~5之间的数"
continue
echo "over!"
;;
esac
done