一、if语句的结构

分为以下三种:单分支、双分支、多分支

单分支if语句
if CONDITION is True; then
分支
fi
双分支if语句
if CONDITION is True; then
分支
else
分支
fi
多分支if语句
if CONDITION is True; then
分支
elif CONDITION is True; then
分支2
...
else
分支n
fi

二、测试形式

分为以下两种:命令执行状态结果形式、条件表达式形式

1. 命令的执行状态结果,即命令执行成功与否:
if COMMAND &> /dev/null;then
#一定要注意此处的命令不带括号或单引号
2. 条件表达式

分为以下两种:命令形式和关键字形式

(1)命令形式(其本质同上1,表达式本身也不能应用于测试,下述的test和[]形式也是命令,类似.表示source命令)

(a) test EXPRESSION

if test EXPRESSION; then

(b) [ EXPRESSION ]

if [ EXPRESSION ]; then #一定要注意中括号前后有空格
(2) 关键字形式

(c) [[ EXPRESSION ]]

if [[ EXPRESSION ]]; then
#一般用于字符串测试,尤其是模式匹配测试

三、测试方法(测试种类)

分为以下三种:整数测试、字符串测试、文件测试

1、整数测试

-ge, -gt, -le, -lt, -eq, -ne

(其实也可以用>等来表示,只是得加双小括号)

2、字符串测试;

双目:>, <, ==, != , ~= (用于模式匹配)

单目:-z (真空,非空假),-n(非空真,空假)

3、文件测试

-e $file: 是否存在,存在则为真;

-a $file: 同上,弃用;

-f $file: 文件是否存在,且为普通文件;

-d $file: 是否存在,且为目录;

-h $file: 是否存在,且为符号链接文件;

-l $file: 同上;

-b $file: 是否存在,且为块设备文件;

-S $file: 是否存在,且为套接字文件;

-c $file: 是否存在,且为字符设备文件;

-p $file: 是否存在,且为管道文件;

-r $file: 当前用户是否对此文件拥有读权限;

-w $file: 当前用户是否对此文件拥有写权限;

-x $file: 当前用户是否对此文件拥有执行权限;

-u $file: 文件是否拥有suid权限;

-g $file: 文件是否拥有sgid权限;

-k $file: 文件是否拥有sticky权限;

-O $file: 当前用户是否为文件的属主;

-G $file: 当前用户是否属于文件的属组;

-N $file: 文件自从上一次被读取之后,是否被修改过;

$f1 -nt $f2:文件f1是否比文件f2新;

$f1 -ot $f2:文件f1是否比文件f2旧;

$f1 -ef $f2:文件f1和文件f2是否为同一个文件的硬链接;

上述所有文件测试条件都支持!取反。

最新文章

  1. leggere la nostra recensione del primo e del secondo
  2. [CSS]textarea设置下划线格式
  3. 【Eclipse】 Alt+/ 代码提示问题解决方案
  4. CentOS 6.5安装MongoDB
  5. python数字图像处理(3):图像像素的访问与裁剪
  6. facedetect
  7. Python学习路程day4
  8. 使用libuv实现生产者和消费者模式
  9. 微信读书 iOS 性能优化总结
  10. PHP学习笔记 - 进阶篇(2)
  11. AngularJS Filter用法详解【转+实际测试】 格式化货币
  12. angularjs kindEditor 中自定义按钮 弹出dialog
  13. XML的命名空间
  14. 9月mob(ShareSDK)活动预告,这个秋天非常热
  15. uva10827-Maximum sum on a torus(矩阵最大和的变形)
  16. delphi显示hello world 和退出程序
  17. array_rand
  18. css学习_css定位
  19. 在XShell中使用sz和rz命令下载和上传文件
  20. 【10-2】复杂业务状态的处理(从状态者模式到FSM)

热门文章

  1. 小符号反映大问题,Shell中下划线_与变量的关系。
  2. 关于CSDN, cnblog, iteye和51cto四个博客网站的比较与分析
  3. hdu 4778 Gems Fight! 状态压缩DP
  4. hdu1760博弈SG
  5. Centos7 创建本地 docker 仓库极其遇到的问题
  6. Linux安装mysql-5.7.17
  7. java web Servlet学习笔记-2 请求重定向和请求转发的区别
  8. DataGrid 得到DataGridRow 和DataGridColumn
  9. 有人提了一个问题:一定要RESTful吗?
  10. Spring MVC Ajax 复杂参数的批量传递