bash脚本

1. if 判断的写法。

2. 内建测试结构[]和[[]], [[]]内可以正常存在&&, ||, <, >等操作符。相比之下[]会报错。如:

3. 可以用&& 和 || 分别表示if[];then 和ifnot[];then

4. ((…))和let …, 当算数表达式的结果非零时,返回退出状态码0

5.文件测试

-e 文件存在

-f 是一个一般文件,不是目录或设备文件

-d 是一个目录

-b 是一个块设备

-c 是一个字符设备

-p 是一个管道

-h or -L 是一个符号链接

-S 是一个socket

-s 文件大小不为0

-r 有可读权限

-w 有可写权限

–x 有可执行权限

-N 从文件上一次被读取到现在为止, 文件夹否被修改过

f1 -nt f2 文件f1比文件f2新

f1 -ot f2 文件f1比文件f2旧

f1 -ef f2 文件f1和文件f2是相同文件的硬链接, 或相同的软链接,或一个软链接一个硬链接都可以

-t 文件描述符被关联到一个终端设备上,一般用来检测stdin([ -t 0 ])和stdout([ -t 1 ])是否来自于一个终端

-u set-user-id (suid)标记被设置到文件上。如果一个root用户所拥有的二进制可执行文件设置了set-user-id标记位的话, 那么普通用户也会以root权限来运行这个文件。对于设置了suid标志的文件, 在它的权限列中将会以s表示。注意这样可能导致安全漏洞

-k 设置粘贴位

对于”粘贴位”的一般了解, save-text-mode标志是一个文件权限的特殊类型。如果文件设置了这个标志, 那么这个文件将会被保存到缓存中, 这样可以提高访问速度。粘贴位如果设置在目录中, 那么它将限制写权限. 对于设置了粘贴位的文件或目录, 在它们的权限标记列中将会显示t。在当代unix系统中,文件已经不使用粘贴位,只在目录中用

! 翻转测试结果

6. 整数比较

在中括号[]和双中括号[[]]中使用: -eq, -ne, -gt, -ge, -lt, -le

在双小括号(())和双中括号[[]]中使用: >, >=, <, <=

单小括号()中比较元数当成文件或文件夹处理

7. 执行运算

法一:用let,

 

 

参考: http://www.cnblogs.com/qualitysong/articles/2102582.html