Linux shell编程(if、for、case、while语句的解释与应用)

分支结构:if语句

语法:    
            if command; then 
                ...
                语句列表
            else #else也可以不要
                ...
            fi #if结束
                command可以是任意的可以执行的shell命令或者脚本


从键盘上输入两个整数,输出较大者。

read a b
if [ $a -gt $b ] ; then
   echo $a
else
   echo $b
fi

从键盘上输入一个整数,判断这个整数是否为奇数。

read a
if [ `expr $a % 2` -eq 1 ];then
	echo "这是一个奇数"
else
	echo "这不是一个奇数"
fi

多路分支语句  case语句

        语法:
            case 字符串变量 in
                模式1)
                    ...语句列表
                    ;; #类似于c语言中的break,但是在shell里,;;一定要有的。
                模式2)
                    ...
                    ;;
                ...
                模式n)
                    ;;
            esac #case结尾反过来写

         
                case语句真正的功能强大之处在于它可以使用模式,而不是固定的字符匹配
                一个模式是一串正规的字符和特殊通配符组成的字符串。
                //case模式可以用正则表达式(非常有限地支持)

特殊的通配符:
* shell通配符 代表任意多个或者0个字符(注,在正则表达式中,* 代表匹配0个或者多个先前字符)
? shell通配符 代表一个任意字符(注,在正则表达式中,? 代表匹配0个或者1个先前字符(模式))

shell中的 ;; 双引号相当于C语言中的break。

判断一个文件名,是C源文件还是c++源文件(.cpp)还是头文件:

case $1 in    #获取第一个参数
	*.c)
		echo "C文件"	;;
	*.cpp)
		echo "C++文件"	;;
	*.h)
		echo "头文件" 	;;
esac

循环语句 

for语句

        语法:
            for 变量名 in 单词表
            do
                ...
                语句列表
            done

                "单词表":以空白符分隔开的字符串的列表
                    eq:
                        a b c ddd "a c"  几个单词? --》5个单词
                        for语句执行的次数就是“单词表”中的单词个数
                        并且吗,每次执行时,“变量名”的值 就是下一个单词的值。
 

for i in a b c ddd "a c"
do
    echo $i
done
        #输出 a b c ddd "a c"

用for语句求100以内的奇数之和

(())双圆括号使得可以在shell使用c语言的for风格
但是,只能在for这一行可以使用 ,其它行还是shell风格,如下代码:

for ((i=0;i<100;i++)) 
do
	if [ `expr $i % 2` -eq 1 ];then
		let n=n+i  #n=`expr $n + $i`
	fi
done
echo $n

while语句

while 命令或者表达式
        do
            ...
            语句列表
        done 

练习:    
        写一个shell脚本计算一个普通文件有多少行。
        提示:
            输入重定向
            read是一行一行的读

line=0
while read var
do
	line=`expr $line + 1`
done <test.txt
echo "line = $line"

until 命令或者表达式

语法:

do
        ...语句列表
done

until和while功能类似,但是不同的是until只当测试的命令或者表达式为假时(不成功)才执行循环体内的命令列表,条件成立或成功,就退出循环,这一点和while是相反的。

输出1000以内的质数:

i=2
j=3
echo -n "1000以内的质数有:1 2 "
while [ $j -le 1000 ]
do
	until [ $i -eq $j ] 
	do
		if [ `expr $j % $i` -eq 0 ];then
		{
			break
		}
		fi
		let i=i+1
	done
	if [ $i -eq $j ];then
		echo -n "$j "
	fi
	let j=j+1
	i=2
done

break 和continue

break n 
                跳出第n层循环
continue n
                转到最近的第n层循环语句执行下一轮循环
                数字n表示第几层循环
            break n ,continue n n不写默认是1,和c语言含义是一样的。

获取参数

将命令行中的参数相加,如在终端输入 ./1.sh 5 3,则输出 8.

v=`expr $1 + $2`
echo "$v"

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勾栏听曲_0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值