三.【bash】基本运算符

  • 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awkexpr,expr 最常用 是一款表达式计算工具,使用它能完成表达式的求值操作。
  • 注意使用的反引号
  • 表达式和运算符之间要有空格$a + $b写成$a+$b不行
  • 条件表达式要放在方括号之间,并且要有空格[ $a == $b ]写成[$a==$b]不行 乘号(*)前边必须加反斜杠()才能实现乘法运算

1. +   –   \*   /

基本条件运算方式:

a) let sum=sum+10

b) sum=$(($sum+i))

c) sum=expr $sum + 10


2.关系运算符

运算符说明
-eq等于
-ne不等于
-gt大于
-lt小于
-ge大于等于
-le小于等于


3.逻辑运算符

运算符说明
&&and
||or


4.字符串运算符

运算符说明
=字符串是否相等
!=字符串不相等
=-z字符串长度为0
=-N字符串长度不为0
str字符串是否是空,不空为true


5.文件运算符

操作符说明
-e文件存在 (-a:被弃用
-f是一般文件
-s文件大小不为0
-d目录
-b块设备
-c字符设备(键盘,modem,声卡等)
-p管道
-h符号链接
-L符号链接
-Ssocket
-t文件描述符被关联到终端设备上,一般测 stdin([-t 0]) 或stdout([-t 1])是否来一个终端
-r具有可读权限
-w具有可写权限
-x具有可执行权限
-gset-group-id(sgid)标记被设置到文件或目录上
-k设置粘贴位
-o判断拥有文件
-G文件的group-id是否与你的相同
-N从文件上次读取至今,文件是佛被修改过
f1 -nt f2f1比f2新
f1 -on f2f1比f2旧
f1 -ef f2f1和f2是相同文件的硬链接

( )1.先计算小括号里面的内容

2.数组

3.匹配分组

(( ))1.表达式,不支持-eq这类的运算符。不支持-a和-o,支持<=、>=、<、>这类比较符和&&、||

2.C语言风格的for(())表达式

$( )执行Shell命令,与反撇号等效
$(( ))1.简单算数运算

2.支持三目运算符 $(( 表达式?数字:数字 ))

[ ]条件表达式,里面不支持逻辑判断符
[[ ]]条件表达式,里面不支持-a和-o,不支持<=和>=比较符,支持-eq、<、>这类比较符。支持=~模式匹配,也可以不用双引号也不会影响原意,比[]更加通用
$[ ]简单算数运算
{ }对逗号(,)和点点(…)起作用,比如touch {1,2}创建1和2文件,touch {1..3}创建1、2和3文件
${ }1.引用变量

2.字符串处理

6.开始转义

7.格式化

%-8s 指为8个字符(-表示左对齐,默认右对齐),如果不足则自动以空格填充,超过也会将内容全部显示出来

序列说明
\a警告字符,通常为ASCII的BEL字符
\b后退
\c输出结果中任何结尾的换行字符
\f换页(formfeed)
\n换行
\r回车(Carriage return)
\t水平制表符
\v垂直制表符
\\一个字面上的反斜杠字符
\ddd表示1到3位数八进制值的字符。仅在格式字符串中有效
\0ddd表示1到3位的八进制值字符

发表回复

电子邮件地址不会被公开。 必填项已用*标注