文档详情

shell 基本计算、逻辑运算、位运算详解.pdf

发布:2017-06-02约5.32千字共3页下载文档
文本预览下载声明
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 第
显示全部
相似文档