#!/bin/bash
#if elif fi
#如果else分支没有语句执行,就不要写这个else。
#格式
#if condition
#then
# command1
# command2
# .....
# commandn
#elif condition2
#then
# commandn
#else
# commandm
#fi
#也可以写成一行,例如
#if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
#for循环
#格式
#for var in item1 item2 ... itemN
#do
# command1
# command2
# ....
# commandn
#done
#写成一行
#for var in item1 item2 ... itemN; do command1; command2… done;
#遍历数组
array=(1 2 3 4 5)
#带下标
for i in ${!array[@]}
do
printf "%s\t%s\n" "${i}" "${array[$i]}"
done
#不带下标
for i in ${array[@]}
do
printf "%s\n" "$i"
done
#while语句
#while condition
#do
# command
#done
int=1
while(( $int<=5 ))
do
echo $int
let "int++"
done
#let命令是bash中用于计算的工具,提供常用运算符还提供了方幂**运算符。在变量的房屋计算中不需要加上$来表示变量,如果表#达式的值是非0,那么返回的状态值是0;否则,返回的状态值是1。
#语法
#let arg [arg ...] #arg代表运算式
#例如
#let a++,b--
#let "t1 = ((a = 5 + 3, b = 7 - 1, c = 15 - 4))"
echo '按下 <CTRL-D> 退出'
echo -n '输入你最喜欢的网站名: '
while read FILM
do
echo "是的!$FILM 是一个好网站"
done
#while无限循环
#语法格式
:<<EOF
while :
do
command
done
或者
while true
do
command
done
或者
for (( ; ; ))
:<<EOF
语法:
((表达式1,表达式2…))
特点:
1、在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等。
2、在双括号结构中,所有变量可以不加入:“$”符号前缀。
3、双括号可以进行逻辑运算,四则运算
4、双括号结构 扩展了for,while,if条件测试运算
5、支持多个表达式运算,各个表达式之间用“,”分开
例如:
扩展逻辑运算
a=1;
b="ab";
echo $((a>1?8:9));
((b!="a"))&& echo "err2";
((a<2))&& echo "ok";
#扩展四则运算
a=1;
b=2;
c=3;
((a=a+1));
echo $a;
a=$((a+1,b++,c++));
echo $a,$b,$c
#扩展流程控制语句
num=100;
total=0;
for((i=0;i<=num;i++));
do
((total+=i));
done
echo $total;
total=0;
i=0;
while((i<=num));
do
((total+=i,i++));
done
echo $total;
if((total>=5050));then
echo "ok";
fi
EOF
#until循环
:<<EOF
until 循环执行一系列命令直至条件为 true 时停止。
until 循环与 while 循环在处理方式上刚好相反。
一般 while 循环优于 until 循环,但在某些时候—也只是极少数情况下,until 循环更加有用
EOF
#语法格式
#until condition
#do
# command
#done
a=0
until [ ! $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
#case的用法
#Shell case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下:
:<<EOF
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
EOF
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
1) echo '你选择了 1'
;;
2) echo '你选择了 2'
;;
3) echo '你选择了 3'
;;
4) echo '你选择了 4'
;;
*) echo '你没有输入 1 到 4 之间的数字'
;;
esac
#跳出循环 break ,continue
while :
do
echo -n "输入 1 到 5 之间的数字:"
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为 $aNum!"
;;
*) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"
break
;;
esac
done
#esac case的语法和C family语言差别很大,它需要一个esac(就是case反过来)作为结束标记,每个case分支用右圆括号,用两#个分号表示break。
#continue命令仅仅是跳出当前循环
while :
do
echo -n "输入 1 到 5 之间的数字: "
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为 $aNum!"
;;
*) echo "你输入的数字不是 1 到 5 之间的!"
continue
echo "游戏结束"
;;
esac
done
#这个例子中游戏永远不会结束
shell编程之流程控制篇
猜你喜欢
转载自blog.csdn.net/qq_35211818/article/details/81332611
今日推荐
周排行