文件测试运算符

文件测试运算符用于检测 Unix 文件的各种属性。

下面最常用的是 -f 参数 来检查是否是文件

#!/bin/bash
#start nginx php-fpm
list1="php-fpm7.0 nginx" for proc in $list1
do
echo start...$proc
if [ -f $proc ]
then
./$proc
else
$proc
fi
sleep 0.1
done
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [ -f $file ] 返回 true。

属性检测描述如下:

操作符 说明 举例
-b file 检测文件是否是块设备文件,如果是,则返回 true。 [ -b $file ] 返回 false。
-c file 检测文件是否是字符设备文件,如果是,则返回 true。 [ -c $file ] 返回 false。
-d file 检测文件是否是目录,如果是,则返回 true。 [ -d $file ] 返回 false。
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [ -f $file ] 返回 true。
-g file 检测文件是否设置了 SGID 位,如果是,则返回 true。 [ -g $file ] 返回 false。
-k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 [ -k $file ] 返回 false。
-p file 检测文件是否是有名管道,如果是,则返回 true。 [ -p $file ] 返回 false。
-u file 检测文件是否设置了 SUID 位,如果是,则返回 true。 [ -u $file ] 返回 false。
-r file 检测文件是否可读,如果是,则返回 true。 [ -r $file ] 返回 true。
-w file 检测文件是否可写,如果是,则返回 true。 [ -w $file ] 返回 true。
-x file 检测文件是否可执行,如果是,则返回 true。 [ -x $file ] 返回 true。
-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true。
-e file 检测文件(包括目录)是否存在,如果是,则返回 true。 [ -e $file ] 返回 true。

示例:

#!/bin/bash
. ./main.sh #include extern file
echo "------------------example file test----------------------"
url="http://www.baidu.com"
echo "print file.sh var url=$url"
file="./a.out"
#check file info message
#-b check file is block device
if [ -b "/dev/random" ]
then
echo "/dev/random is block device file"
fi
#-c check file is char device
ls -l /dev/zero
if [ -c /dev/zero ]
then
echo "/dev/zero file is char device "
else
echo "/dev/zero file is not char device"
fi
#-f check file is normal file -f; file that not block file and not char device file
if [ -f /home/daokr/myfile/main.c ]
then
echo "main.c is normal file"
fi
#-d check file is directroy
if [ -d /dev/zero ]
then
echo "/dev/zero is directory"
else
echo "/dev/zero is not directroy"
fi
#-s check file is empty if not empty return true
if [ -s /home/daokr/myfile/main.c ]
then
echo "/home/daokr/myfile/main.c is not empty"
else
echo "/home/daokr/myfile/main.c is empty"
fi
#-e check file is exist if not exist return false
if [ -e /home/daokr/myfile/a.c ]
then
echo "a.c file is exist"
else
echo "a.c file not exist"
fi
#-rwx check file is read write and exe
if [ -r /home/daokr/myfile/main.c ]
then
echo "main.c file is allow read"
else
echo "main.c file is not allow read"
fi
#-w check main.sh file is writeable
if [ -w ./main.sh ]
then
echo "main.sh is writeable"
else
echo "main.sh not write"
fi
#-x check main.sh file is execute
if [ -x ./main.sh ]
then
echo "main.sh is allow execute"
else
echo "main.sh is not allow execute"
fi

shell脚本之文件操作的更多相关文章

  1. (转)shell脚本之文件测试操作符及整数比较符

    shell脚本之文件测试操作符及整数比较符 原文:http://www.cnblogs.com/Steward-Xu/p/6722592.html 一.文件测试操作符: 在书写测试表达式是,可以使用一 ...

  2. shell 脚本大文件处理

    shell  脚本大文件处理 字符串处理 s='{"_id":{"$oid":"59b73d80930c17474f9f050d"},&qu ...

  3. shell脚本等的操作

    1.命令替换:`` 反向单引号,也称重音符.键盘上和~键在一起的那个键呦,千万不要敲成单引号. A. 使用了``后,shell首先替换输出中``括起来的date命令,然后执行整个输出命令. B.命令替 ...

  4. shell脚本中文件测试

    shell脚本中文件测试 author:headsen chen  2017-10-17  14:35:19 个人原创,转载请注明作者,否则 依法追究法律责任 [ -f  filename  ]   ...

  5. Shell脚本统计文件行数

    Shell脚本统计文件行数 转自 http://www.jb51.net/article/61943.htm    示例:row_count.sh文件 awk '{print NR}' row_cou ...

  6. Shell脚本实现文件遍历和删除操作

    本文需要实现的功能如下:某文件夹下具有由按数字编号命名的文件夹,需要删除除最大编码外的文件. 具体实现 大致思路:循环遍历该文件夹下所有文件,正则匹配出最大编码文件:然后循环文件,删除除最大编码外的文 ...

  7. shell脚本实现文件的自动上传以及下载 scp sftp lftp 还有expect命令

    转至: 最近需求要求定期从一个[定期更新的文件] 中解析员工信息 ,插入到数据库中. 按理来说很简单,  无非就是io流读文件,然后crud balalalala..... 其实不是的, 我我写的这个 ...

  8. 利用shell脚本统计文件中出现次数最多的IP

    比如有如下文件test.txt 1  134.102.173.43 2  134.102.173.43 3  134.102.171.42 4  134.102.170.9 要统计出现次数最多的IP可 ...

  9. shell脚本学习-文件包含

    跟着RUNOOB网站的教程学习的笔记 和其他语言一样,shell也可以包含外部脚本.这样可以很方便的封装一些公用的代码作为一个独立的文件.shell文件包含的语法有两种形式 . filename  # ...

随机推荐

  1. webapi初学项目(增删改查),webapi增删

    wenapi做了一个从数据库增删改查的项目 webapi: 1.创建项目:visual C# —> ASP.NET MVC 4 web应用程序 模板—>web api; 2.注册路由: 路 ...

  2. SQL Server 索引优化 ——索引缺失

    本文我们将重点给出动态视图法发现数据库中缺失的索引.对于索引的调整和新建将不在本文阐述范围,后续将陆续分享相关经验. sys.dm_db_missing_index_details 缺失索引明细,包括 ...

  3. 利用脚本一键执行脚本,创建SharePoint文档库列表

    SharePoint基于文档库和列表上进行二次开发,生成新的文档库和新的列表模板 通过新的模板,创建新的文档库与列表 --定义site对象$site = SPSite http://dvt176/si ...

  4. 可拖拽dialog

    指令的封装转自https://blog.csdn.net/sinat_21902709/article/details/86545444 可拖拽dialog应用于很多弹出框,所以需要作用于全局 在插件 ...

  5. java第三次面试总结

    这次面试是二面,由于自己的经验不足,面试的结果不是很令人满意,所以与这家公司失之交臂,在这里记录一下经历,吸取教训. 之前的一面是笔试+面试,面试是主管,今天的面试是总监.在前台招待我的时候,还跟我说 ...

  6. stack + positioned

    stack 下套container, 发现最大的显示,小的都没显示, 把所有都套个POSITIONED, 都正常显示了.

  7. springboot activiti 工作流版本 集成代码生成器 shiro 安全框架

    官网:www.fhadmin.org 工作流模块---------------------------------------------------------------------------- ...

  8. SVN commit:remains in tree-conflict错误的解决办法

    转自:https://chenjinbo1983.iteye.com/blog/2005123 昨天在提交一个新类包的时候,出错了,重新提交了几次也不行. 错误是:Aborting commit: ‘ ...

  9. stm32 CAN过滤器组

    在互联型产品中, CAN1和CAN2分享28个过滤器组 其它STM32F103xx系列产品中有14个过滤器组 位宽设置 四种配置方式: 1个32位的屏蔽位模式 2个32位的标识符列表模式,可以过滤2个 ...

  10. Linux命令——watch

    参考:Linux watch Command Tutorial for Beginners (5 Examples) 前言 有的时候我们想重复执行某一命令,通过该命令的输出进而获知系统某些信息.wat ...