1.和文档相关的判断
shell 脚本中 if 还经常判断关于档案属性,比如判断是普通文件还是目录,判断文件是否有读写执行权限等。常用的也就几个选项:
- -e:判断文件或目录是否存在;
- -d:判断是不是目录,并是否存在;
-f:判断是否是普通文件,并存在; - -r:判断文档是否有读权限;
- -w:判断文档是否有写权限;
- -x:判断是否可执行。
使用 if 判断时,具体格式为:
|
|
例子:
|
|
因为 /home/ 为目录非文件,所以 -f 并不会显示 “ok”。
|
|
2.变量是否为空
有时候需要判断一个变量的值是否为空,以避免后续操作产生异常。如果不去判断变量是否有值,就接着在后续命令中引用该变量,则会出错。比如下面脚本:
|
|
加入内容:
|
|
这个脚本看上去是没有问题,但没有考虑到 1.txt 文件不存在的情况,如果文件不存在,那么 n 的值也是不存在的。后面的判断也会出错。所以应该先判断一下 n 是否为空。
使用下面方法即可:
|
|
加入内容:
|
|
-n 选项可以判断一个变量是否不为空,注意一定要把变量引起来,上例用双引号把 $a 引起来了,否则是不对的,还有一个和 -n 正好相对的, -z ,用法如下:
|
|
加入内容:
|
|
这个 -z 后面的 $a 可以不用双引号引起来。
3.if 判断条件可以是一条命令
|
|
grep -p 选项的作用是,过滤但不输出。用在 if 判断中,不需要输出结果,只需要知道它到底有没有执行成功,也就是说如果 /etc/passwd 文件中含有 yanyi 这个用户,那么条件就成立了。