一, if 判断
1.基本语法
if [ 条件判断式 ];then
程序
fi
或者
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
else
程序
fi
注意事项:
(1)[ 条件判断式 ], 中括号和条件判断式之间必须有空格
(2)if 后要有空格
2.案例实操
(1)输入一个数字, 如果是 1, 则输出 banzhang zhen shuai, 如果是 2, 则输出 cls zhen mei, 如果是其它, 什么也不输出.
- [[email protected] datas]$ touch if.sh
- [[email protected] datas]$ VIM if.sh
- #!/bin/bash
- if [ $1 -eq "1" ]
- then
- echo "banzhang zhen shuai"
- elif [ $1 -eq "2" ]
- then
- echo "cls zhen mei"
- fi
- [[email protected] datas]$ chmod 777 if.sh
- [[email protected] datas]$ ./if.sh 1
- banzhang zhen shuai
二, case 语句
1.基本语法
case $ 变量名 in
"值 1")
如果变量的值等于值 1, 则执行程序 1
;;
"值 2")
如果变量的值等于值 2, 则执行程序 2
;;
... 省略其他分支...
*)
如果变量的值都不是以上的值, 则执行此程序
;;
esac
注意事项:
1) case 行尾必须为单词 "in", 每一个模式匹配必须以右括号 ")" 结束.
2) 双分号 ";;" 表示命令序列结束, 相当于 java 中的 break.
3) 最后的 "*)" 表示默认模式, 相当于 java 中的 default.
2.案例实操
(1)输入一个数字, 如果是 1, 则输出 banzhang, 如果是 2, 则输出 cls, 如果是其它, 输出 renyao.
- [[email protected] datas]$ touch case.sh
- [[email protected] datas]$ VIM case.sh
- !/bin/bash
- case $1 in
- "1")
- echo "banzhang"
- ;;
- "2")
- echo "cls"
- ;;
- *)
- echo "renyao"
- ;;
- esac
- [[email protected] datas]$ chmod 777 case.sh
- [[email protected] datas]$ ./case.sh 1
- 1
三, for 循环
1.基本语法 1
- for (( 初始值; 循环控制条件; 变量变化 ))
- do
程序
done
2.案例实操
(1)从 1 加到 100
- [[email protected] datas]$ touch for1.sh
- [[email protected] datas]$ VIM for1.sh
- #!/bin/bash
- s=0
- for((i=0;i<=100;i++))
- do
- s=$[$s+$i]
- done
- echo $s
- [[email protected] datas]$ chmod 777 for1.sh
- [[email protected] datas]$ ./for1.sh
- "5050"
3.基本语法 2
for 变量 in 值 1 值 2 值 3...
do
程序
done
4.案例实操
(1)打印所有输入参数
- [[email protected] datas]$ touch for2.sh
- [[email protected] datas]$ VIM for2.sh
- #!/bin/bash
- # 打印数字
- for i in $*
- do
- echo "ban zhang love $i"
- done
- [[email protected] datas]$ chmod 777 for2.sh
- [[email protected] datas]$ bash for2.sh cls xz bd
- ban zhang love cls
- ban zhang love xz
- ban zhang love bd
(2)比较 $* 和 [email protected] 区别
(a)$* 和 [email protected] 都表示传递给函数或脚本的所有参数, 不被双引号 "" 包含时, 都以 $1 $2 ...$n 的形式输出所有参数.
datas]$ touch for.sh datas]$ vim for.sh
#!/bin/bash
for i in $* do echo "ban zhang love $i" done
for j in [email protected] do echo "ban zhang love $j" done
datas]$ bash for.sh cls xz bd ban zhang love cls ban zhang love xz ban zhang love bd ban zhang love cls ban zhang love xz ban zhang love bd |
(b)当它们被双引号 ""包含时,"$*"会将所有的参数作为一个整体, 以"$1 $2 ...$n"的形式输出所有参数;"[email protected]"会将各个参数分开, 以"$1""$2"..."$n" 的形式输出所有参数.
- [[email protected] datas]$ VIM for.sh
- #!/bin/bash
- for i in "$*"
- #$* 中的所有参数看成是一个整体, 所以这个 for 循环只会循环一次
- do
- echo "ban zhang love $i"
- done
- for j in "[email protected]"
- #[email protected]中的每个参数都看成是独立的, 所以 "[email protected]" 中有几个参数, 就会循环几次
- do
- echo "ban zhang love $j"
- done
- [[email protected] datas]$ chmod 777 for.sh
- [[email protected] datas]$ bash for.sh cls xz bd
- ban zhang love cls xz bd
- ban zhang love cls
- ban zhang love xz
- ban zhang love bd
四, while 循环
1.基本语法
while [ 条件判断式 ]
do
程序
done
2.案例实操
(1)从 1 加到 100
- [[email protected] datas]$ touch while.sh
- [[email protected] datas]$ VIM while.sh
- #!/bin/bash
- s=0
- i=1
- while [ $i -le 100 ]
- do
- s=$[$s+$i]
- i=$[$i+1]
- done
- echo $s
- [[email protected] datas]$ chmod 777 while.sh
- [[email protected] datas]$ ./while.sh
- 5050
来源: http://www.bubuko.com/infodetail-3456520.html