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