第3节. 算术逻辑运算和条件测试

退出状态

img

[00:16:02 root@host1 ~]#grep aaa /etc/passwd   #找到找不到结果自然不同
[03:44:30 root@host1 ~]#echo $?
1
[03:44:35 root@host1 ~]#grep -q root /etc/passwd
[03:44:59 root@host1 ~]#echo $?
0
[03:45:02 root@host1 ~]#

img

img

img

img

错误对照表:https://www.cnblogs.com/x_wukong/p/5148237.html

img

一个脚本里2条命令,最后一条执行成功了,返回的$0就是0

img

img

image-20220204195205493

算术运算

image-20220204195258331

图中的echo $[$RANDOM%50]里面的$可以去掉的,因为$[]里面会认为RANDOM就是变量

img

img

img

方法一:let

img

img

方法二:中括号

img

img

img

img

方法三:2个小括号

img

方法四:expr

img

img

img

方法五:declare申明强制运算

img

img

65取模是0-64

如果是0-65的随机数呢?哈哈,不好弄了吧。

/66啊,不就行了哦,笨哦。

颜色的取值范围是31-37,可以用RANDOM随机数产生,用7取模范围就是0-6,+31就可以了。

image-20220204200519606

image-20220204200537459

image-20220204200941039

img

img

img

img

++i和i++

img

img

img

let id+=5 就是 id=id+5

image-20220204200918481

逻辑运算与或非

image-20220204201612861

img

python里也学过与或非,来了解一下,哈哈哈

image-20220204202518103

and是与,&也是与,两者截然不同,貌似相同又。举例

image-20220204202944173

再来

image-20220204203117780

再看

image-20220204203501984

懂了吧~

1、and和or是基于运算符两边的整体值来算的;而&又叫做位与是将运算符两边化作0101后再进行位与的哈哈,我在用名称解释名称咯,额。

2、然后and和or里的99 or 100 和99 and 100也挺有意思的。一句话做人呐or就行了,做研究呐可能需要and。

image-20220204203746202 image-20220204204102987

image-20220204203811927 image-20220204204021027

or就是已经是true的情况下就不会再继续比了。反正或的话,结果都是true。

and就是当前如果是真,就一定要看到最后一个元素,万一他是假,就全盘就是假了,所以要那最后一个元素。A(true) and B(true)也就取B了。

3、一句话,or和and是真假运算--基于表达式两边的整体,而&和|是二进制的与或运算--基于表达式两边的数值的二进制单个位来算的。

image-20220204201651178

这里的短路与的真假,不要简单按上图0和1,去理解,0啊他这个图是假的意思。但是linux,true你去echo $?会发现是0,所以0代表的是真。所以这种运算是真假运算,不要用0和1区理解,除非你定死了01和真假的一一对应。

当然也可以不要理解短路与,而直接理解第一个cmd1执行ok了再执行cmd2:cmd1 && cmd2

img

true和false就是命令,专门产生真假的

img

还有yes就是专门产生y,不停的

img

其实不是y,而是yes后面的参数

img

img

两个变量值互换

img

img

方法二就是上图的A^B=C,C^A=B,C^B=A

x=$[x^y]就是得出了中间值C赋值给了x,x此时就是中间值。然后拿中间值x去和y异或得到的就是原来的x,将x赋值给y。此时y里的值就变成了x。再拿中间值x去和现在的y--其实是原来的x异或就得到原来的y将此值赋给x,这样x里的值就变成了原来的y。

短路与

img

img

短路或

img

img

img

img

true是真,echo true本身也是真,同时打印出true,此时两个都是真,结果就是真,后面的就不执行了。

img

false是假,只要是假都是假,所以就不会执行后面的 echo true。

然后不会执行&&后面的内容,但是&&的结果还是假,所以就会执行||后面的内容,于是打印出false了就。

test比较表达式

img

img

img

这个和if else还不是一样的,因为A && B || C,不是if A成立就执行B,A不成立就执行C这么简单,还多一个A成立执行B,B执行失败,那么||前面的整体就是假,于是还是会执行C的。

除了字符串的比较,还有数字比较

img

img

img

image-20220205172606282

image-20220205172553541

printf是是格式化字符串的。类似python里的format

image-20220205172530349

中括号代替test

test $x -gt $y

image-20220205172622014

案例

1、如何用pycharm使用这个项目

https://ziwei.pro/quick-start.html

2、pycharm里跑nodejs

https://blog.csdn.net/pyzzd/article/details/108478746

①安装nodejs,走官网

②pycharm安装nodejs插件

3、nodes要高版本,才能运行ES6 Module

nodes升上去了,看看我的gitbook是否正常,哈哈,好像之前node不能用高版本来着。。。

可以用,出现,就是有什么URL格式警告,暂时还能用

4、然后pycharm里用js

npm install 要在项目目录下install,否则找不到库

image-20240805111401850

这个报错,看起来是就该文件后缀为mjs,其实没必要,改了一样会报错,其实是npm安装的包找不到

在项目根目录下,新建package.json,然后同样在项目根目录下调用cmd运行npm install xxx ;这两部操作pycharm只需要新建package.json,pycharm就会自动给你安装了

image-20240805111603116

编辑好package.json后👇一般就会自动弹窗让你安装

image-20240805111648596

如果不弹出来,也可以右键安装

image-20240805111923625

Copyright 🌹 © oneyearice@126.com 2022 all right reserved,powered by Gitbook文档更新时间: 2024-08-05 11:19:34

results matching ""

    No results matching ""