阅读量: 58
分支与循环
一、分支语句
# if 或 elif 后面跟的条件,事实上是一条可执行的程序,判断的依据是该程序是否执行成功
if 条件
then
命令
fi
# 如果脚本的参数个数小于三个,则提示用户需要三个参数;
if [ $# -lt 3 ]
then
echo "Sotty,if needs 3atgs"
fi
if 条件; then
命令
fi
if 条件; then
命令1
else
命令2
fi
# 提示用户输入他的账号,并显示欢迎信息,如为空则提示:
echo "pelease input your name:"
read NAME
if [ "$NAME" = "" ]; then
echo "your name is null"
else
echo "welcome,$NAME"
fi
if 条件1; then
命令1
elif 条件2; then
命令2
else
命令3
fi
# 如果用户输入的账户为空,则提示,否则如果账户在/etc/passwd中能找到,则欢迎,否则拒绝服务:
echo "please input yout name: "
read NAME
if [ " $NAME" = "" ]; then
echo "your name is null"
elif grep $NAME /etc/passwd > /dev/null; then
echo "wlcome,$NAME"
else
echo "sorry,$NAME"
fi
用grep查找,也可按查找到的具体行数进行判断:grep -c ^$NAME /etc/passwd
# 所有的case……in的多重分支,均可用if……elif……else代替
$num=$1
case $num in
1)
echo "Monday"
;;
2)
echo "thuesday"
;;
3)
echo "Wendnesday"
;;
4)
echo "Thursday"
;;
5)
echo "Friday"
;;
6)
echo "Saturday"
;;
7)
echo "Sunday"
;;
*)
echo "error"
esac
二、循环语句
for 变量名 in 列表
do
命令
done
# 以脚本的参数作为循环依据,将参数输出
# for loop in 1 2 3 4 5 6
for loop in "$@"
do
echo $loop
done
# 统计出某个目录下有多少文件:
counter=0
for file in ls
do
counter=expr $counter + 1
# 也可以使用let counter+=1
done
echo "There are $counter files in pwd
"
# 注意变量counter赋值时等号前后不嫩有空格,否则会认为counter是一个命令
# 也可以使用双括号运算符“(())”,如:((a++))
# 求1~100之间所有的整数和
sum=0
for i in {1..100}
let sum+=i
done
echo "1到100的和为:$sum"
i=1
sum=0
while [ $i -le 10 ]; do
let sum+=#i
let i++
done
echo $sum