1.if条件语句
格式:
if 条件命令串
then
条件为真时的命令串
else
条件为假时的命令串
fi
例子
#!/bin/bash
if[ "$1" = "" ] || [ "$2" = "" ]
then
echo "Please enter file name"
exit 1
fi
if [ -e $2 ]
then
echo "The file already exists"
until [ ! -f $2 ]
do
sleep 1
done
fi
if [ ! 'mv $1 $2']
then
echo "mv successful"
else
echo "mv error"
fi
2.for循环
格式:
for 变量名
[in数值列表]
do
若干个命令行
done
变量名可以是用户选择的任何字符串,如果变量名是var,则在in之后给出的数值将顺序替换循环命令列表中的$var。如果省略了in,则变量var的取值将是位置参数。对变量的每一个可能的赋值都将执行do和done之间的命令列表
#!/bin/bash
counter=0
for file in *
do
counter='expr $counter+1'
done
echo "There are $counter files in 'pwd' we need to process"
3.while和until
while格式
while
若干个命令 1
do
若干个命令 2
done
只要while的“若干个命令行1”中最后一个命令返回值状态为真,while循环就继续执行do...while之间的“若干个命令2”
until格式
until
若干个命令行1
do
若干个命令行2
done
until循环和while循环的区别:while循环在条件未真时继续执行循环,而until则在条件为假时继续执行循环
#!/bin/bash
echo -n "Please enter number:"
read n
sd=0
rev=""
on=$n
echo "$n"
while [ $n -gt 0]
do
sd=$(($n % 10)) # get Remainder
n=$(($n % 10)) # get next digit
rev=$(echo $rev$sd)
done
echo "on in a reverse order $rev"
4.case条件选择
格式
exp-1)
若干个命令行 1
;;
exp-2)
若干个命令行 2
;;
...
*)
其他命令行
esac
shell通过计算字符串string的值,将其结果依次和表达式exp-1,exp-2等进行比较,直到找到一个匹配的表达式为止,如果找到了匹配项则执行它下面的命令,直到遇到一对分号;;为止。
在case表达式中,也可以使用shell的通配符(“*”“?”[]),通常用“*”,作为case命令的最后表达式,以便使在前面找不到的任何响应匹配项时执行“其他命令行”的命令。
#!/bin/bash
echo "Hit a key,then hit return."
read Keypess
case "$Keypress" in
[A-Z] echo "Upprercase letter";;
[a-z] echo "Lowercase letter";;
[0-9] echo "Digit";;
*) echo "Punctuation", whitespace,or other";