LinuX---Shell---流程控制
if判断
1)基本语法
(1)单分支
if [ 条件判断式 ];then
程序
fi
或者
if [ 条件判断式 ]
then
程序
fi
(2)多分支
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
else
程序
fi
注意事项:
① [ 条件判断式 ],中括号和条件判断式之间必须有空格
② if后要有空格
2)案例实操
输入一个年龄数字,如果小于18,则输出“未成年”,如果小于60,则输出“成年人”,否则输出“老年人”,如果没有指定年龄,提示“请携带年龄”。
feng@ubuntu:~$ vim if.sh
写入以下内容
#!/bin/bash
if [ $# -eq 0 ]
then
echo '请携带年龄'
elif [ $1 -lt 18 ]
then
echo '未成年人'
elif [ $1 -lt 60 ]
then
echo '成年人'
else
echo '老年人'
fi
保存退出。
feng@ubuntu:~$ chmod 777 if.sh
feng@ubuntu:~$ ./if.sh 12
未成年人
feng@ubuntu:~$ ./if.sh 34
成年人
feng@ubuntu:~$ ./if.sh 66
老年人
feng@ubuntu:~$ ./if.sh
请携带年龄
case语句
1)基本语法
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
值2)
如果变量的值等于值2,则执行程序2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
注意事项:
(1)case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
(2)双分号“;;”表示命令序列结束,相当于C中的break。
(3)最后的“*)”表示默认模式,相当于C中的default。
2)案例实操
输入一个字符串,如果是start,则输出starting..,如果是stop,则输出stopping..,如果是其它,输出 please input (start|stop)。
feng@ubuntu:~$ vim case.sh
脚本中写入以下内容。
#!/bin/bash
case $1 in
"start")
echo "starting"
;;
"stop")
echo "stopping"
;;
*)
echo "please input (start|stop)"
;;
esac
保存退出。
feng@ubuntu:~$ chmod 777 case.sh
feng@ubuntu:~$ ./case.sh start
starting
feng@ubuntu:~$ ./case.sh stopping
stopping
feng@ubuntu:~$ ./case.sh x
please input (start|stop)
for循环 (sh不支持,bash支持)
1)基本语法1
for ((初始值;循环控制条件;变量变化))
do
程序
done
2)案例实操
从1加到100
feng@ubuntu:~$ vim for1.sh
脚本中写入以下内容。
#!/bin/bash
sum=0
for((i=1;i<=100;i++))
do
sum=$[$sum+$i]
done
echo $sum
保存退出。
feng@ubuntu:~$ chmod 777 for1.sh
feng@ubuntu:~$ ./for1.sh
5050
3)基本语法2
for 变量 in 值1 值2 值3…
do
程序
done
4)案例实操
feng@ubuntu:~$ vim for2.sh
写入以下内容。
#!/bin/bash
for i in a b c
do
echo "let's call $i"
done
保存退出。
feng@ubuntu:~$ chmod 777 for2.sh
feng@ubuntu:~$ ./for2.sh
let's call a
let's call b
let's call c
(1)比较$*和$@区别
$*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 …$n的形式输出所有参数。
feng@ubuntu:~$ vim for3.sh
写入以下内容。
#!/bin/bash
echo '=============$*============='
for i in "$*"
#$*中的所有参数看成是一个整体,所以这个for循环只会循环一次
do
echo "let's call $i"
done
echo '=============$@============='
for j in "$@"
#$@中的每个参数都看成是独立的,所以“$@”中有几个参数,就会循环几次
do
echo "let's call $i"
done
保存退出。
feng@ubuntu:~$ chmod 777 for3.sh
feng@ubuntu:~$ ./for4.sh cls mly wls
=====$*=========
let's call a b c
=====$@=========
let's call a
let's call b
let's call c
while循环
1)基本语法
while [ 条件判断式 ]
do
程序
done
2)案例实操
从1加到100。
feng@ubuntu:~$ vim while.sh
写入以下内容。
#!/bin/bash
sum=0
i=1
while [ $i -le 100 ]
do
sum=$[$sum+$i]
i=$[$i+1]
done
echo $sum
保存退出。
feng@ubuntu:~$ chmod 777 while.sh
feng@ubuntu:~$ ./while.sh
5050