概述
1.控制结构
在下面的小节中,各语句的语法中的statements表示(when、while或until)测试天剑满足时,将要执行的一系列命令。
1.if语句
if condition
then
statements
else
statements
fi
2.elif语句
#!/bin/sh
echo "Is it morning?Please answer yes or no"
read timeofday
if [ $timeofday = "yes" ]
then
echo "Good morning"
elif [ $timeofday = "no" ] ; then
echo "Good afternoon"
else
echo "Sorry,$timeofday not recongnized .Enter yes or no"
exit 1
fi
exit 0
3.一个与变量有关的问题
刚才所做的修改弥补了一个非常明显的缺陷,但这个脚本程序还潜藏着一个更隐蔽的问题。运行这个新的脚本程序,但是这次不回答问题,而是直接按下回车键我们
将看到如下所示的出错信息;
[ : =: unary operator expected
哪里出问题了呢?问题就在第一个if语句。在对变量timeofday进行测试的时候,它包含一个空字符串,这使得if语句成为下面这个样子:
if [ = "yes" ] 这不是一个合法的条件,为了避免出现这种情况,我们必须给变量加上引号,
if [ "$timeofday" = "yes" ] 这样,一个空变量提供给我们一个合法的测试:
if [ "$timeofday" = "yes" ]
4.for语句
我们用for结构来循环处理一组值,这组值可以是任意字符串的集合。
它的语法很简单:
for variable in values
do
statements
done
如果把第一行由for too in bar fud 43 修改为 for foo in "bar fud 43" 会怎样呢?别忘了,加上引号就等于告诉shell把引号之间的一切东西看作是一个字符串。
#!/bin/sh
for file in $(ls f*.sh); do
lpr $file
done
exit 0
5.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
很明显,这不是一种询问密码的非常安全的办法,但它却是演示了while语句的作用。
#!/bin/sh
foo=1
while [ "$foo" -le 20 ]
do
echo "Here we go again"
foo=$(($foo+1))
done
exit 0
6.until语句
until语句的语法如下所示:
until condition
do
statements
done
它与while循环很相似,只是把条件测试反过来了。
#/bin/sh
until who | grep "$1" > /dev/null
do
sleep 60
done
echo -e \a
echo "*****$1 has just logged in ******"
exit 0
7
.case语句
case 结构比我们迄今为止见过的其他结构都要稍微复杂一些,
case variable in
pattern [ | pattern] ...) statements;;
pattern [ | pattern] ...) statements;
.....
esac
你在case 结构中使用如*这样的通配符时要小心,因为case将使用第一个匹配的模式,即使后续的模式有更加精确的匹配也是如此。
#!/bin/sh
echo "Is it morning? Please answer yes or no"
read timeofday
case "$timeofday" in
yes) echo "Good morning";;
no ) echo "Good Afternoon";;
y ) echo "Good Morning";;
n ) echo "Good Afternoon";;
* ) echo "Sorry ,answer not recognized";;
esac
exit 0
最后
以上就是爱笑蜻蜓为你收集整理的shell详解二的全部内容,希望文章能够帮你解决shell详解二所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复