Shell编程

4.4.3Sselect语句

Shell中select语句可以将选项列表做出类似目录的形式,以交互的形式选择列表中的数据,传入select语句中的主体部分加以执行。select语句实际上也是一个循环语句,若不添加break关键字,程序将无法跳出select结构 。select的语法格式如下:

select 变量 in 列表
do
 
  ...
  [break]
done
#! bin/sh

echo "请输入你要选择的题目"
select subject in "Android" "ios" "java" "C++"
do 
	echo "您选择了"$subject"这个科目!"
	break
done
exit 0;

运行结果:

4.4.4 case语句 

case语句可以将一个变 量的内容与多个选项进行匹配,若匹配成功,则执行该条件下对应的语句。语法格式如下:

case var in
    选项1) ...;;
    选项1) ...;;
    选项1) ...;;
 ...
*)...
esac

#! /bin/sh
echo -e "请输入第一个数:\c"
read a
echo -e "请输入第二个数:\c"
read b
echo -e "请选择运算符号 + - * /:\c"
read var 
case $var in
	"+") echo "a+b=" `expr $a + $b`;;
	"-") echo "a-b=" `expr $a - $b`;;
	"*") echo "a*b=" `expr $a * $b`;;
	"/") echo "a*b=" `expr $a / $b`;;
	*) echo "计算错误!"
esac
exit 0

运行结果:

case语句的匹配条件可以是多个,每个匹配项的多个条件使用"I” 符连接。比如操作系统中常用的"yes" 或"no" 选项,当用户输入"Y"、"y" 或"N"、"n” 等时,系统应可以根据用户的输入给出肯定或否定的操作。示例代码如下:

#!/bin/sh
read var
case $ var in
    yes|y|Y) echo "true";;
    no|n|N) echo "false";;
    *) echo "input error"
esac
exit 0

4.5 Shell中循环语句 

循环是编程语言中不可或缺的重要部分,它可以将多次重复运算,凝聚在简短程序中大大减少了代码量。Shell脚本中常 用的循环有: for循环、while循环和until循环。

4.5.1 for循环(列表循环)

其中变量是在当前循环中使用的一个对象,用来接收变量列表中的元素;变量列表是整个循环要操作的对象的集合,可以是字符串集合或文件名、参数等等,变量列表的值会被逐个赋给变量。for循环格式如下:

for 变量 in 列表名
do 
 ...
done
#! /bin/sh
for month in Jan Feb Mar Apr May Jun Jul Agu Sep Oct Nov Dec
do
	echo -e "$month\t\c"
done
echo
exit 0

 \t :输出一个占位符

\c :输出不换行

 4.5.2 while循环

在while循环中,当表达式的值为假时, 停止循环,否则循环将一直进行。 此处表达式外的"[]”表示的是[命令,而非语法格式中的中括号,不能省略。while循环格式如下:

while [表达式]
do
  ...
done
#!/bin/sh
count=1
sum=0
while [ $count -le 100 ]
do
	sum=`expr $sum + $count`
	count=`expr $count + 1`
done
echo "sum=$sum"
exit 0

 4.5.3 until 循环

until循环与while循环的格式基本相同,不同的是,until循环的条件为假时,才能继续执行循环中的命令。until循环格式如下:

until [ 表达式 ]
do
    ...
done
#!/bin/sh
#until
i=1
until [ $i -gt 3 ]
do
	echo "the number is $i."
	i=`expr $i + 1`
done
exit 0

4.6Shell脚本调试

Shell编程中可以通过ShelI提供的一些选项,对脚本文件进行调试,其中常用的调试选项有: -n、-V、 -X ,这些选项的功能分别如下:

-n:不执行脚本,仅检查脚本中的语法问题;
-v:在执行脚本的过程中,将执行过的脚本命令打印到屏幕;
-x:将用到的脚本内容打印到屏幕i

 使用-n选项调试下面代码:

#! /bin/sh
echo -e "请输入第一个数:\c"
read a
echo -e "请输入第二个数:\c"
read b
echo -e "请选择运算符号 + - * /:\c"
read var
case $var in
        "+") echo "a+b=" `expr $a + $b`;;
        "-") echo "a-b=" `expr $a - $b`;;
        "*") echo "a*b=" `expr $a * $b`;;
        "/") echo "a*b=" `expr $a / $b`;;
        *) echo "计算错误!
esac
exit 0

运行结果:错误在*) echo 这一行,' " '没有匹配(没有后引号)

 使用-n选项调试上面的代码运行结果:(在执行脚本的过程中,将执行过的脚本命令打印到屏幕

  使用-n选项调试上面的代码运行结果:(将用到的脚本内容打印到屏幕i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值