Day31 Linux Shell中的关系运算符以及使用Shell打印水仙花数和九九乘法表,敲七游戏

本文详细介绍了Shell脚本中的条件判断和循环控制,包括简单比较、与或非操作、if语句的多种形式以及for循环和增强for循环的使用。讲解了如何在Shell中进行大小比较、逻辑运算,并给出了多个示例,如打印水仙花数、素数、酒桌游戏等,帮助读者深入理解Shell脚本的控制结构。
摘要由CSDN通过智能技术生成

目录

简单比较

与或非

if与for

if语句

for循环

增强for循环

 各种例题:

打印水仙花数:

 打印20以内的素数

酒桌游戏:敲七


简单比较

在shell当中使用1代表true,0代表false

shell中使用字母表示各种判断

-gt:检测左边的数是否大于右边的数,若大于则返回true

对于大小的比较直接使用$[表达式]即可实现大小的比较,这里的格式若使用-gt则格式会错误

举例:

与或非

与:&;或:|;非:!

在程序中不允许两个条件一起书写,想要去写只能去一个个去写,中间使用与或非连接两个条件。

与字符举例:

 只有当前后都为1时结果才是1

或字符举例:

 只有前后两边都是0的时候结果才是0

非字符举例:

 非字符实现的是反转功能,且反转的是紧跟后面的字符,若想反转一个整体,需要将后面反转的部分加上小括号

if与for

脚本的执行流程默认情况下是从上向下依次执行。

if语句

if语句使该执行流程变为多分支流程。

由于if的判断条件本身就是做一个判断,所以在判断条件中不需要加入$符计算表达式的结果,而是直接对表达式进行一个判断。

格式1:

if 判断条件

then

        成立执行的代码

fi

举例:这里给出两种情况,一种大于,一种小于

 通过结果发现:对于判断条件不成立的情况仍然输出了true

这是由于:使用[],需要每一块的内容都以空格分割,且默认不能识别符号

解决方法:将大于号加上转义字符即可

但这种方式写出的if语句中的判断条件的值不可以大于两位数。且不可以使用连续的符号例如>=,

所以这里若涉及到>=的话还是需要使用字母-ge来进行实现>=。

[]适用于以字母来表示判断条件,使用符号的局限性比较大

格式2:

if 判断条件

then 

        成立执行的代码

else

        不成立执行的代码

fi

 举例:

 该结果说明:

[[]]方式可以识别符号,每一块之间需要使用空格分割,但仍然不可以使用连续符号,且值也不能大于两位数,同时可以使用字母来代替符号使用。

总结:

只要使用中括号判断条件,直接使用字母进行判断(不需要考虑注意事项),如果使用符号,注意事项比较多。

剩下判断条件还有两种方式:()和(())

这里直接说明(()),因为()已经被弃用

 举例:

 结果说明:

(())可以直接使用符号,不需要考虑任何问题,也可以直接引用变量,但不可以使用字母。

这里引出:[]不可以直接引用变量,但[[]]可以直接引用变量。

举例:男女跑步成绩,使用到if的嵌套

 输出:

Shell中若想使用中文比较,需要使用双中括号的格式去判断,且使用符号==即可实现中文的比较

 格式3:

if 判断条件

then

        为true的代码

elif 判断条件

then

        为true的代码

。。。

else(这个else可加可不加)

        为false的代码

fi

举例:

考试成绩:0到59,加班学习;60到99,正常;100,休息三天

 输出结果:

for循环

 for循环格式:

for((定义变量;判断条件;控制语句))

do

        循环的代码体

done

 简单举例:

 循环嵌套:输出i小时j分钟

输出:

 举例:

使用for循环打印九九乘法表

 输出:这其中引出不换行输出为:echo -n 

增强for循环

格式:

for 变量 in 结果集

do

        循环的代码体

done

结果集的格式:

格式1:{开始..结束}

格式2:`seq 开始 结束`

两种格式的区别:

格式1在使用变量时不会产生结果集,只会将大括号内的内容包括大括号当作一个整体成为一个字符串直接输出

而格式2可以使用变量,不过需要引用变量,不可直接使用,可以产生结果集。

举例:

输出: 

举例:输出奇数和偶数的和

 

这里若是不使用$符计算结果,可以使用字母let来进行计算结果

 输出:

 各种例题:

打印水仙花数:

水仙花数:是指一个三位数的各个位上的三次方的和等于这个三位数,1000以内有四个水仙花数

 输出:

 打印20以内的素数

 素数:除了1和本身之外没有其他的因数

输出:

酒桌游戏:敲七

 敲七:指的是依次按顺序说数,凡是遇到个位数或者十位数为7或者是7的倍数的数,全部改为敲桌子

 输出:这里给出20以内的敲七数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值