bash中的流程控制,设计到判断
[ ] , if || && switch-case do-while until for 函数()等等
(1)判断[]
-r -w -b -c -f -x -l -e[exist] -O[owner]
file1 -nt file2 file1比file2新;
file1 -ot file2 file1比file2旧;
-eq = 表示数值相等;[ $a = $b]
-ne != 不等于
-gt 大于[great to] [%a -gt $b ]
-lt 小于[little to]
-ge 大于或等于[great equal]
-le 小于或等于
-z 为空[zero] [-z $a ]
-n 不为空 [ -n $a ]
(2)if[] && || 语句的判断
if[] 条件
then 动作
elif[]
then
elif[] then
else
fi
实例:判断一个输入的变量,然后根据相应的变量做相应的操作:
case $AAA in
shrek)
echo hello
;;
root)
echo root
;;
*)
echo other
;;
esac
实例如下;
do
done
实例一:输出小于100的数:
do
done
实例:输出小于100的数
do
done
实例一:产生1-100之间的数字
unset i a b c不会引起当前的shell的冲突;
实例:当输入一个函数名的时候就调用相应的函数完成相应的功能:
(1)判断[]
-r -w -b -c -f -x -l -e[exist] -O[owner]
file1 -nt file2 file1比file2新;
file1 -ot file2 file1比file2旧;
-eq = 表示数值相等;[ $a = $b]
-ne != 不等于
-gt 大于[great to] [%a -gt $b ]
-lt 小于[little to]
-ge 大于或等于[great equal]
-le 小于或等于
-z 为空[zero] [-z $a ]
-n 不为空 [ -n $a ]
[ abc ] //这里的abc都是ASCII码,所以都是非零的数字;
echo $?; 运行结果为true=0;
[ "$USER" = "SHREK"] && echo hello root //判断变量
[ -f /usr/sbin/httpd ] && echo yes //判断是否为文件
[ -x /etc/passwd ] && echo yes //判断是否是可执行文件
[ $a = $b] //变量a/b的值是否相等
[ -z $a ] //a是否为空
[ $a -gt $b ] //a是否比b大
作用:我们可以进行判断后做其他的操作,检测到某个软件如果没有则进行安装;这种判断在系统的shell脚本中用的十分广泛;
(2)if[] && || 语句的判断
if[] 条件
then 动作
elif[]
then
elif[] then
else
fi
实例:判断一个输入的变量,然后根据相应的变量做相应的操作:
#!/bin/bash
read AAA
if [ $AAA = shrek ]
then
echo hello shrek
elif [ $AAA = root ]
then echo hello root
elif [ $AAA = other ]
then echo hello other
else
echo 'get out here!'
fi
(3)shell脚本语句的调试
bash -v ./ky //可见的调试;
bash -vx ./ky //可见运行的过程;将每步的执行过程显示出来。
(4)case语句 多重判断
case $AAA in
shrek)
echo hello
;;
root)
echo root
;;
*)
echo other
;;
esac
实例如下;
#!/bin/bash
read AAA
case $AAA in
shrek)
echo hello shrek
echo nice to meet u
;;
root)
echo hello
echo i miss u so much
;;
*)
echo get out here
;;
esac
(5)while [ $i -lt 100] 条件判断
do
done
实例一:输出小于100的数:
#!/bin/bash
i=0
while [ i -lt 100 ]
do
i=$[$i+1]
echo -n "$i"
done
实例二:输入一些字符串
while true
do
read AAA
if [ "$AAA" = "ddd"]
then
break
fi
done
(6)until [$i -gt 100] 条件判断
do
done
实例:输出小于100的数
#!/bin/bash
until [ $i -gt 100]
do
i=$[$i+1]
echo -n "$i "
done
unset i
(7)for i in `seq 1 100` 循环判断
do
done
实例一:产生1-100之间的数字
#!/bin/bash
for aa in `seq 1 100`
do
echo -n "$aa ";
sleep 1
done
实例二:为每个脚本文件加上课执行权限
#!/bin/bash
for aaa in 111 222 333 /etc/profile.d/*.sh
do
echo $aaa
chomd a+x $aaa
done
(8)函数function()
aaa()
{
bbb=$1*$1
return $bbb
}
unset aaa 取消一个函数或者一个变量的值;unset i a b c不会引起当前的shell的冲突;
实例:当输入一个函数名的时候就调用相应的函数完成相应的功能:
#!/bin/bash
start()
{
echo service httpd start
}
stop()
{
echo service httpd stop
}
jisuan()
{
i3=0
read -p "please input two number:" i1 i2
i3=$[$i1 +$i2]
printf "$i1 + $i2 = $i3"
}
read name1
case $name1 in
start)
echo hello start function!
start
;;
stop)
echo hello stop function
stop
;;
jisuan)
echo Begin jisuan:
jisuan
;;
*)
echo invalid input
esac