一、if语句
语法格式如下:
if condition
then
statements
else
statements
fi
举例说明如下:
#!/bin/sh
if [ $timeofday = "yes" ]; then
echo "Good moriing"
else
echo "Good afternoon"
fi
exit 0
二、elif语句
有时候测试条件不止一个,就可以用elif,举例说明如下:
#!/bin/sh
if [ "$timeofday" = "yes" ]
then
echo "Good morning"
elif [ "$timeofday" = "no" ]; then
echo "Godd afternoon"
else
echo "Sorry, $timeofday not recognized. Enter yes or no"
exit 1
fi
exit 0
上面之所以在$timeofday上加上双引号是为了防止用户直接敲回车键使得if语句变成下面这副尊容:
if [ = "yes"]
从而导致出现如下错误:
[: =: unary operator expected
三、for语句
语法格式如下:
for variable in values
do
statements
done
举例说明如下:
#!/bin/sh
for foo in bar fud 43
do
echo $foo
done
exit 0
执行脚本得出如下输出结果:
bar
fud
43
通常for语句与Shell的文件名扩展一起使用。假设你想打印当前目录中所有以字母f开头以.sh结尾的脚本文件,则可以如下来实现:
#!/bin/sh
for file in $(ls f*.sh); do
lpr $file
done
exit 0
for命令的参数表来自括在$()中的命令的输出结果。
四、while语句
语法格式如下:
while condition do
statements
done
举例说明如下:
#!/bin/sh
echo "Enter password"
read trythis
while [ "$trythis" != "secret" ]; do
echo "Sorry, try again"
read trythis
done
exit 0
五、until语句
语法格式如下:
until condition
do
statements
done
until与while相似,区别在于until循环将反复执行语句statements直到条件condition为真为止。
六、case语句
语法格式如下:
case variable in
pattern [ | pattern] ...) statements;;
pattern [ | pattern] ...) statements;;
...
esac
每个模式行都以双引号结尾,因为你可以在前后模式之间放置多条语句,所以需要使用双分号来标记前一个语句的结束和后一个模式的开始。
举例说明如下:
#!/bin/sh
echo "Is it morning?Please answer yes or no"
read timeofday
case "$timeofday" in
[yY] | [yY][eE][Ss] ) echo "Good morning";;
[nN] * ) echo "Good afternoon";;
* ) echo "Sorry, answer not recoginzed";;
esac
exit 0
上面程序中,最后的*)分支类似于C语言中default,表示缺省分支。
七、命令列表
1、AND列表
AND列表结构允许我们按照这样的方式执行一系列命令:只有在前面所有的命令都执行成功的情况下才执行后一条命令,其语法形式如下:
statement1 && statement2 && statement3 && ...
&&的作用是检查前一条命令的返回值。
#!/bin/sh
touch file_one
rm -f file_two
if [ -f file_one ] && echo "hello" && [ -f file_two ] && echo "there"
then
echo "in if"
else
echo "in else"
fi
exit 0
脚本执行结果如下:
hello
in else
2、OR列表
OR列表结构允许我们持续执行一系列命令直到有一条命令成功为止,其后命令将不再被执行,其语法形式如下:
statement1 || statement2 || statement3 || ...
举例说明如下:
#!/bin/sh
rm -f file one
if [ -f file_one ] || echo "hello" || echo "there"
then
echo "in if"
else
echo "in else"
fi
exit 0
脚本执行结果如下:
hello
in if
八、语句块
如果你想在某些只允许使用单个语句的地方(比如:在AND列表或OR列表中)使用多条语句,你可以把它们括在花括号{}中来构造一个语句,举例说明如下:
get_confirm && {
grep -v "$cdcatnum" $tracks_file > $temp_file
cat $temp_file > &tracks_file
echo
add_record_tracks
}
阅读(4678) | 评论(3) | 转发(3) |