控制流结构
if语句
语句格式:
if 条件1 如果条件1为真
then 那么
命令1 执行命令1
elif 条件2 如果条件1不成立,条件2为真
then 那么
命令2 执行命令2
else 如果条件1,2均不成立
命令3 那么执行命令3
fi 完成
注:if语句必须以单词fi结尾
例子:
#!/bin/bash
echo -n "please input your name:"
read NAME
if [ "$NAME" = "" ];then
echo "you don't input your name!"
else
echo "your name is $NAME!"
fi
#!/bin/bash
echo -n "please input your name:"
read NAME
if [ -z "$NAME" ] || [ "$NAME" = "" ];then
echo "you don't input your name!"
elif [ "$NAME" = "root" ];then
echo "hello root!"
elif [ "$NAME" = "liyongfeng" ];then
echo "hello liyongfeng"
else
echo "you don't input root or liyongfeng! but hello $NAME"
fi
if [] 方框里面不要忘记前后的空格
case语句
case语句格式
case in
模式1)
命令1;;
模式2)
命令2;;
esac
例子:
#!/bin/bash
#case select
echo -n "please input a number 1 to 3:"
read ANS
case $ANS in
1)
echo "you selcet 1"
;;
2)
echo "you select 2"
;;
3)
echo "you selcet 3"
;;
y|Y) y或者Y,不能使用||
echo "you input $ANS"
;;
*)
echo "`basename $0`:this is not between 1 to 3" >&2
exit;
;;
esac
basename命令 - strip directory and suffix from filenames,即去除文件名的目录部分和后缀部分。返回一个字符串参数的基本文件名称。
for循环语句
for循环语句的一般格式
for 变量名 in 列表
do
命令1
命令2
done
例子:
#!/bin/bash
#forlist
for loop in 1 2 3 4 5
do
echo "$loop"
done
for循环进行了5次,loop读入5次值
#!/bin/bash
#forlist
for loop in `cat *.txt`
do
echo "$loop"
done
*.txt文件中文字以空格为结尾for执行一次循环
until循环语句
until循环语句格式
until 条件 do语句执行命令直到until条件为假(即until条件返回值不为0,判断条件为真返回值为0),跳出循环
do
命令1
命令2
......
done
注:条件可为任意测试条件,测试发生在循环末尾,因此循环至少执行一次(until循环至少执行一次)
例子
#!/bin/bash
#until
#监控分区
part="/dev/sda1"
#得到盘柜使用分区
use=`df | grep "$part" | awk '{print $5}' | sed 's/%//g'`
echo $use
until [ "$use" -gt "95" ]
do
echo "filesystem is nearly full!"
use=`df | grep "$part" | awk '{print $5}' | sed 's/%//g'`
done
while循环语句
while循环语句格式
while 条件 执行命令1..直到while条件为真(即while条件返回值为0,判断条件为真返回值为0)跳出循环
do
命令1
命令2
......
done
注:在while和do之间虽然只使用一个命令,但可以放几个命令,命令通常用作测试条件
例子
#!/bin/bash
#while_read
echo "ctrl+D退出输入"
while echo -n "请输入电影名字:";read film
do
echo "${film}是一部好电影!"
done
执行结果:
[root@HNTX-JZ-SCMS7 root.adminssh]# ./while
ctrl+D退出输入
请输入电影名字:nihao
nihao是一部好电影!
请输入电影名字:nihao
nihao是一部好电影!
请输入电影名字:liyongfeng
liyongfeng是一部好电影!
请输入电影名字:
是一部好电影!
请输入电影名字:[root@HNTX-JZ-SCMS7 root.adminssh]#
阅读(822) | 评论(0) | 转发(0) |