1.shell的运算符有哪些
+、- | 求和与差 |
*、/、% | 求乘积,商,余数 |
** | 幂运算,例如3**3是求3的立方,即27 |
+=、-=、 *=、/=、%= | 例a+=1相当于a=a+1 |
++variable、- -variable | 先将变量variable的值加1,然后再赋给variable; 先将变量variable的值减1, 然后再赋给variable |
variable++、 variable-- | 先使用variable的值,然后再将该变量的值加1; 先使用variable的值,然后再 将该变量的值减1 |
位运算符、 >> | 位运算通常出现在整数间,它针对的不是整个整数,而是其二进制表示形式中的 某个或者某些位(bit)。例如,2>>1是将二进制形式的2,即10,左移1位,从 而变成100,即4。 左移,4,将4左移2位,结果为16; 右移,8>>2,将8 右移两位,结果为2 |
&、|、~、^ | 按位与,8&4,将8和4进行按位与运算,结果为0; 按位或,8|4,将8和4进行 按位或运算,结果为12; 按位非,~8,将8进行按位非运算,结果为-9(一个字 符占一个字节,即8个二进制位,最高位为1时为负数); 按位异或(a异或b, a、b值不同结果为1,相同结果为0),10^6,将10和6进行按二进制位异或运 算,结果为12。 |
<<=、>>= | 将变量的值左移指定位数之后重新赋给该变量,x,将x的值左移3位,重新 赋给变量x; 将变量的值右移指定位数之后重新赋给该变量,x>>=4,将变量x的 值右移4位后重新赋给变量x。 |
&=、|=、^= | 将变量的值与指定的数值按位与之后重新赋给该变量,x&=8,将变量x的值与8 按位与运算之后重新赋给变量x; 将变量的值与指定的数值按位或之后重新赋给 该变量,x|=7,将变量x的值与7执行按位或运算之后重新赋给变量x; 将变量的 值与指定的数值按位异或之后重新赋给该变量,x^=9,将变量x的值与9执行按 位异或运算之后重新赋给变量x。 |
2.数学计算的命令有哪些,并举例使用
1)(())
用于整数运 算的常用运 算符
实例:
2)let
用于整数运算
说明:使用let命令可以执行一个或者多个算术表达式,其中的变量名毋需使 用$符号
3)expr
可用于整数运算,但还有很多其他的额外功能
说明:使用expr时,运算符及用于计算的数字左右都至少有一个空格,否则 会报错;使用乘号时,必须使用反斜线屏蔽其特定含义;使用expr做 计算,将一个未知的变量和一个已知的整数相加,看返回码是否为0,如果为0就认为做加法的变量为整数,否则就不是整数。
实例:
4)bc
linux下的一 个计算器程 序(适合整 数及小数运 算)
5)$[]
用于整数运算
6)awk
awk既可以 用于整数运 算,也可以 用于小数运 算
实例:
7)declare
定义变量值 和属性,-i参数可以用 于定义整形 变量,做运 算
实例:
3.${}中的使用,并举例包含(#, ##,%,%%,:, /, //),并举例使用
(1)${parameter}
返回变量的内容
(2)${#parameter}
返回变量内容的长度(按字符)
(3)${paramater:offset}
在变量${parameter}中,从位置offset之后开始提取子串到结 尾
(4)${paramater:offset:length}
在变量${parameter}中,从位置offset之后开始提取长度为length的子串
(5)${parameter#word}
从变量${parameter}开头开始删除最短匹配的word子串
(6)${parameter##word}
从变量${parameter}开头开始删除最长匹配的word子串
(7)${parameter%word}
从变量${parameter}结尾开始删除最短匹配的word子串
(8)${parameter%%word}
从变量${parameter}结尾开始删除最长匹配的word子串
(9)${parameter/pattern/string}
使用string代替第一个匹配的pattern ${parameter//pattern/string} 使用string代替所有匹配的pattern
实例:
4.条件测试的语法 (()), [[]],[],test,功能以及语法格式
在shell中,用户可以使用测试语句来测试指定的条件表达式的条件的真或假。当指定的条件为 真时,整个条件测试的返回值为0;反之,如果指定的条件为假,则条件测试语句的返回值为非0值。
语法
语法1: test <测试表达式>
语法格式:test命令和<测试表达式>之间至少有一个空格
语法2:[ <测试表达式> ]
语法格式:该方法和test命令的用法一样,[]的边界和内容之间至少有一个空格
语法3:[[ <测试表达式> ]]
语法格式:比test和[]更新的语法格式。[[]]的边界和内容之间至少有一个空格。[[]]中可以使用通配符等进行模式匹配
语法4:((<测试表达式>))
语法格式:一般用于if语句里,双小括号两端不需要有空格,测试对象只能是整数
功能
-a/-e 文件
文件是否存在
-b 文件
文件是否存在,且为块文件,如果文件存在且是一个块文件,则结果 为0 -c 文件 文件是否存在且为字符文件,如果文件存在且是一个字符文件,则结 果为0 -L 文件 文件存在且为链接文件则为真
-d 文件
文件存在且为目录则为真,即测试表达式成立
-f 文件
文件存在且为普通文件则为真,即测试表达式成立
-s 文件
文件存在且文件大小不为0则为真
-u 文件
文件是否设置suid位,如果设置了suid,则结果为0 -r 文件 文件存在且可读为真
-w 文件
文件存在且可写为真
-x 文件
文件存在且可执行则为真
f1 -nt f2,nt为newer than
文件f1比文件f2新则为真,根据文件的修改时间来计算
f1 -ot f2,ot为older than
文件f1比文件f2旧则为真,根据文件的修改时间来计算
5.通过read读入两个整数,并比较他们的大小
6.假设执行一个可以携带参数的script,执行该脚本后屏幕会显示如下的数据