一。控制流结构
#!/bin/bash
make /home/wrr
如果创建目录失败,将如何处理呢?
2.if语句
if 条件1
then 命令1
elif 条件2
then 命令2
else 命令3
fi
if语句必须以fi终止
3.#!/bin/bash
#iftest
if [ "10" -lt "12" ]
then
echo "yes"
fi
#!/bin/bash
#iftest2
echo -n "enter your name:"
read name
if [ "$name"=="" ];then
echo "you didi not enter"
else
echo "hello,$name"
fi
#!/bin/bash
#ifcp
if cp myfile.bak myfile
then
echo "good copy"
else
echo "wrong"
fi
#!/bin/bash
#elif
echo -n "enter name:"
read name
if[ -z $name]||[ "$name"="" ];then
echo "you didi not enter"
elif[ "$name"="root" ];then
echo "hello root"
elif[ "$name"="china" ]
echo "hello china"
else
echo "hello $name"
fi
二。case语句
1.case语句为多选择语句,可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令
2.格式
case 值 in
模式1)
命令1
;;
模式2)
命令2
;;
esac
case取值后面必须为单词in,每一个模式必须以右括号结束,取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行至;;。模式匹配符*表示任意字符,?表示任意单字符,[...]表示类或范围中任意字符
3.举例
#!/bin/bash
#case select
echo -n "enter a number from 1 to 3:"
read ans
case $ans in
1)echo "you select 1"
;;
2)echo "you select 2"
;;
3)echo "you select 3"
;;
*)echo "`basename $0`:wrong">&2
exit
;;
esac
三。for循环
1.格式
for 变量名 in 列表
do
命令1
命令2
done
当变量值在列表里,for循环即执行一次所有命令,使用变量名访问列表中取值。命令可为任何有效的shell命令和语句,变量名为任何单词。in列表用法是可选的,如果不用它,for循环使用命令行的位置参数,in列表可以包含替换、字符串和文件名
2.#!/bin/bash
#forlist1
for loop in 1 2 3 4 5
do
echo $loop
done
#!/bin/bash
#forlist2
for loop in orange red blue
do
echo $loop
done
四。until循环
1.格式
until 条件
do
命令1
命令2
。。。
done
条件可为任意测试条件,测试发生在循环末尾,因此循环至少执行一次
2.#!/bin/bash
#until_mon
#监视分区
part="/backup"
得到磁盘使用的百分比
look_out=`df|grep "part"|awk `{print $5}`|sed 's|%11g'`
echo $look_out
until [ "$look_out" -gt "90" ]
do
echo "filesystem /backup is nearly full"|mail root
done
五。while循环
1.while命令
do
命令1
命令2
。。。
done
在while和do之间虽然通常只使用一个命令,但可以放几个命令,命令通常用作测试条件
2.#!/bin/bash
#whileread
echo "按住ctrl+d退出输入"
while echo -n"输入你最喜欢的电影:";read film
do
echo "$film is good"
done
#!/bin/bash
#whileread
while read line while read line
do
echo $line
done
六。break和continue控制
1.break[n]
退出循环,如果是一个嵌入循环里,可以指定n来跳出的循环个数
continue:跳过循环步
continue命令类似于break命令,只有一点重要差别,它不会跳出循环,只是跳过这个循环步
2.#!/bin/bash
#breakout
while:
do
echo -n "enter any number[1..5]"
read ans
case $ans in
1|2|3|4|5)echo"you right"
;;
*)echo "wrong"
break
;;
esac
done
#!/bin/bash
#breakout2
while:
do
echo -n "enter any number [1..5]"
read ans
case $ans in
1|2|3|4|5)echo "right";;
*)echo -n "wrong,continue(y/n)?"
read is_continue
case $is_continue in
y|yes|Y|Yes)continue;;
*)break;;
esac
esac
done
阅读(734) | 评论(0) | 转发(0) |