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

  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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值