您的位置:首页 > 运维架构 > Shell

Linux基本功十二:shell脚本流程控制

2013-08-07 19:53 671 查看
  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 ]
[ 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: