shell 基本计算、逻辑运算、位运算详解.pdf
文本预览下载声明
shell 基本计算、逻辑运算、位运算详解
Shell 提供大量的基本运算操作 ,在脚本中非常有 。Shell 对您提供的算术表达式求值 ,执行运算展开式 ,此时使 得出的结果替换表达
式
以下面的格式提供运算表达式 :$(( expression ))
$ echo $((5*(3+3)))
30
$ result = $(($myvar-10))
shell提供方便的数之间的进制转换 :
$ echo $((013))#八进制
$ echo $((0xA4))#十六进制
还可以使 以下格式指定 2 到 64 之间的任意进制 :
$((BASE#NUMBER))
echo $((8#377))
echo $((16#D8))
在 Shell 中进行进制转换的另一个诀窍是使 bc , 它是一种任意精度运算语言 ,大多数 UNIX 安装程序都提供。因为它允许您指定输出
进制 ,所以当您需要以十进制以外的进制输出时 ,这是一种很好的技术。
bc 的特殊变量 ibase 和 obase 分别包含 于输入和输出的进制的值。缺省情况下 ,都被设置为 10。要执行进制转换 ,需要改变其中的一
个或两个值 ,然后提供一个数字。
复制代码代码如下:
$ echo obase=16; 47 | bc
2F
$ echo obase=10; ibase=16; A03 | bc
2563
了解了这些基本特性 ,下边再看看逻辑运算符和逻辑表达式 ,基本的 + – * / % 不再赘述。
一、逻辑运算符
逻辑卷标 表示意思
1. 关于档案与目录的侦测逻辑卷标 !
-f 常 !侦测 『档案』是否存在 eg: if [ -f filename ]
-d 常 !侦测 『目录』是否存在
-b 侦测是否为一个 『 block 档案』
-c 侦测是否为一个 『 character 档案』
-S 侦测是否为一个 『 socket 标签档案』
-L 侦测是否为一个 『 symbolic link 的档案』
-e 侦测 『某个东西』是否存在 !
2. 关于程序的逻辑卷标 !
-G 侦测是否由 GID 所执行的程序所拥有
-O 侦测是否由 UID 所执行的程序所拥有
-p 侦测是否为程序间传送信息的 name pipe 或是 FIFO (老实说 ,这个不太懂 !)
3. 关于档案的属性侦测 !
-r 侦测是否为可读的属性
-w 侦测是否为可以写入的属性
-x 侦测是否为可执行的属性
-s 侦测是否为 『非空白档案』
-u 侦测是否具有 『 SUID 』的属性
-g 侦测是否具有 『 SGID 』的属性
-k 侦测是否具有 『 sticky bit 』的属性
4. 两个档案 间的判断与比较 ;例如[ test file1 -nt file2 ]
-nt 第一个档案比第二个档案新
-ot 第
显示全部