Shell笔记4-Shell流程控制

if

基本语法:

if [ condition ];then
	code
fi

或者

if [ condition ]
	then
	code
fi

注意事项

[ condition ],中括号和condition之间必须有空格,if后要有空格。

例子

输入一个数字,如果是1,输出one,如果是2,输出two,如果是其他,什么都不输出。

#!/bin/bash
if [ $1 -eq '1' ];then
  echo 'one'
elif [ $1 -eq '2' ];then
  echo 'two'
fi
[root@localhost opt]# ./demo.sh 1
one
[root@localhost opt]# ./demo.sh 2
two
[root@localhost opt]# ./demo.sh 3

case

基本语法

case $变量 in
	"值1")
		程序1
	;;
	"值2")
		程序2
	;;
	……
	*)
		default情况对应的程序
	;;
esac

注意事项

case行结尾必须是in,每一个匹配必须以右括号结束
双分号“;;”代表终止当前case,相当于Java中的break
最后的"*)"代表默认情况,相当于Java中的default

例子

输入一个数字,如果是1,输出man,如果是0,输出woman,否则,输出unknown。

#!/bin/bash
case $1 in
  1)
    echo 'man'
  ;;
  0)
    echo 'woman'
  ;;
  *)
    echo 'unknow'
  ;;
esac
[root@localhost opt]# ./demo.sh 2
unknow
[root@localhost opt]# ./demo.sh 1
man
[root@localhost opt]# ./demo.sh 0
woman

for

基本语法1

for (( 初始值;循环控制条件;变量变化 ))
do
	code
done

例子1

计算从1加到100的值。

#!/bin/bash
s=0
for (( i=1;i<=100;i++ ))
do
  s=$[$s+$i]
done
echo $s

基本语法2

for 变量 in 值1 值2 值3……
do
	code
done

例子2

打印所有参数

#!/bin/bash
for i in $*
do
  echo $i
done

$#和$@的区别

当$#和$@被双引号包裹的时候,它们是有区别的。

#!/bin/bash
for i in "$*"
do
  echo $i
done

for i in "$@"
do
  echo $i
done
[root@localhost opt]# ./demo.sh 1 2 3 4 5
1 2 3 4 5
1
2
3
4
5

可以发现,被引号包裹后,$*被当做一个字符串整体,$@会把各参数分开。所以说$*循环执行了一次,$@执行了参数个数次。

while

基本语法

while [ condition ]
do
	code
done

例子

计算从1加到100

#!/bin/bash
s=0
i=1
while [ $i -le 100 ]
do
  s=$[$s+$i]
  i=$[$i+1]
done
echo $s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值