算术运算

默认不支持算数运算。所以需要特定的语法来完成,

shell进行算数运算的工具:

  1. let
  2. declare
  3. (())或$(())或$[]
  4. bc

let:

格式: let var=算术表达式

例如:let num=1+20;echo $num

declare:

例如: declare -i var = 数值

declare -i num=1+5; echo $num

(())或$()或$[]

格式:

  • ((var=算术表达式))
  • var=$[算术表达式]
  • var=$((算术表达式))
  • var=$(expr arg1 arg2 arg3 ...)

范例:

((num=999+1));echo $num

echo num=$((999-1))

echo num=$[1+10]

bc:

格式:echo '算术表达式' | bc

例如:echo 999+999 | bc

生成随机数:$RANDOM   取值范围:0-32767

范例:生成0-49之间随机数: echo $[$RANDOM%50]

取余范围: # x % n 取余范围是 0 ~ n-1

例如:对100进行取模得到的值范围在0-99之间。

逻辑运算:与或非、异或

真:$? 为0    或者 二进制1

假:$? 不为0   或者 二进制0

  • 与:&
  • 或:|
  • 非:!
  • 异或:^(脱字符) -- 相同为假,不同为真

短路运算

  • 短路与 &&:前面为真才会执行后面的
  • 短路或 ||:前面为真后面的就不执行了

条件测试命令:

  • 格式一:test EXPRESSION
  • 格式二:[ EXPRESSION ]
  • 格式三:[[ EXPRESSION ]] --- 支持正则表达式和通配符

    注意:EXPRESSION前后必须有空白字符

    test和中括号等价

test功能:

测试文件的状态、类型、权限

文件权限判断选项:

-r:是否存在读权限

-x:是否存在执行权限

-w:是否存在写权限

文件类型判断:

-f:是否为文本文件

-d:是否为目录文件

文件状态判断:

-e:文件是否存在

-a:文件是否存在

字符串判断:

-z:字符串是否为空

= != > <:连个字符串是否相同、不同等。(这些符号两边要有空格)

使用[[]]的时候:

== 和 !=:使用'=='或'!='的时候,会把右侧的认为是通配符

=~:如果使用的是' =~',会把右侧的认为是正则表达式

双括号采用 == =~

数字之间的比较方法;

-eq: equal,相等

-ne: not-equal,不等

-gt: greater-than,大于

-lt:less-than,小于

关于 () 和 {}

作用:将多个命令组合在一起,批量执行

格式:( 空格 CMD1;CMD2;...)和 {空格 CMD1;CMD2;...; }(括号左边要有空格)

使用小括号(),里面执行的命令会开启子进程,大括号不会。

组合条件测试:

把两个条件用并且、或者的关系联系起来

并且: -a表示并且 --- EXPR1 -a EXPR2

例如:如果当前用户非root且该文件不存在就创建这个文件

[ $(whoami) != 'root' -a ! -e /data/dir ] && sudo mkdir /data/dir

或者: -o表示或者 --- EXPR1 -o EXPR2

read:用来接受键盘输入

read读取到键盘的输入以后,会把值分配给指定的一个变量。如果没有指定变量,就把值赋值给内置的变量REPLY。

选项:

-p   指定提示信息

最新文章

  1. BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊
  2. ADO.NET封装的SqlHelper
  3. SpringMVC 使用Form标签库制作登录表单
  4. SRM 358(1-250,500pt)
  5. 【CF】220B Little Elephant and Array
  6. 使用Iterator遍历Sheet(POI)验证及解释结果有序性
  7. HDU1698_Just a Hook(线段树/成段更新)
  8. Python内置函数(18)——bin
  9. python语法_模块_loggin_hashlib_conifgparser
  10. 极路由hc5661安装tcpdump
  11. [luogu1829][bzoj2154][国家集训队]Crash的数字表格 / JZPTAB【莫比乌斯反演】
  12. soapUI学习文档(转载)
  13. IOS 开发体验测试问题
  14. 【其他】【navicat】【1】navicat导入txt文件中文乱码问题解决
  15. word2013密钥
  16. mysql攻防之写入漏洞
  17. 第九章 词典 (d2)散列:排解冲突(2)
  18. scrapy(一)scrapy 安装问题
  19. 前馈神经网络练习:使用tensorflow进行葡萄酒种类识别
  20. [Unity Editor]10行代码搞定Hierarchy排序

热门文章

  1. 那些年uniapp踩过的坑之-------搜索框插件uni-search-bar字体和图标居中的问题
  2. OA办公软件篇(二)—权限管理
  3. HMS Core Discovery第14期直播预告~纵享丝滑剪辑,释放视频创作力
  4. 玩转LiteOS组件:玩转Librws
  5. 关于 background-image 渐变gradient()那些事!
  6. Bugku CTF练习题---MISC---贝斯手
  7. XCTF练习题---WEB---simple_js
  8. Django学习——静态文件配置、request对象方法、pycharm如何链接数据库、Django如何指定数据库、Django orm操作
  9. 神器 Nginx 的学习手册 ( 建议收藏 )
  10. sqlx操作MySQL实战及其ORM原理