Shell脚本----文件测试运算符

文件测试运算符

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

-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]
-x file检测文件是否可执行,如果是,则返回true。举例:[-x $file] 返回true
-s file检测文件是否为空(文件大小是否大于0),不为空返回true。举例:[-s $file] 返回true
-e file检测文件(包括目录)是否存在,如果是,则返回true,举例:[-e $file] 返回true

其他检查符:

-S: 判断某文件是否socket。
-L:检测文件是否存在并且是一个符号链接。

if [ -e $file ]
then
	echo "文件存在"
else
	echo "文件不存在"
fi

Shell test 命令

test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试
文件测试

-e 文件名如果文件存在则为真
-r 文件名如果文件存在且可读则为真
-w 文件名如果文件存在且可写为真
-x 文件名如果文件存在且可执行则为真
-s 文件名如果文件存在且至少有一个字符则为真
-d 文件名如果文件存在且为目录则为真
-f 文件名如果文件存在且为普通文件则文件为真
-c 文件名如果文件存在且为字符型特殊文件则为真
-b 文件名如果文件存在且为快特殊文件则为真

字符串测试

参数说明
=等于则为真
!=不相等则为真
-z 字符串字符串的长度为零则为真
-n 字符串字符串的长度不为零则为真
cd /bin

if test -e ./bash
then
	echo '文件已存在!'
else
	echo '文件不存在!'
fi

输出结果:

文件已存在!

另外,Shell还提供了与(-a)、或(-o)、非(!)三个逻辑操作符用于将测试条件连接起来,其优先级为: ! 最高、-a 次之,-o 最低.例如:

cd /bin

if test -e ./notFile -o -e ./bash
then
	echo '至少有一个文件存在'
else
	echo '两个文件都不存在'
fi

输出结果:

至少有一个文件存在
if test !-e ${file};
then
	mkdir ${file}
fi

如果文件(file)不存在,就创建(file)文件

Shell输入/输出重定向
大多数UNIX系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。
重定向命令列表如下:

命令说明
command > file将输出重定向到file
command < file将输入重定向到file
command >> file将输出以追加的方式重定向到file
n > file将文件描述符为n的文件重定向到file
n >> file将文件描述符为n的文件以追加的方式重定向到file
n >& m将输出文件m和n合并
n <& m将输入文件m和n合并
<< tag将开始标记tag和结束标记tag之间的内容作为输入

Shell文件包含
和其他语言一样,Shell也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的文件。
Shell文件包含的语法格式如下:

. filename  #注意点好(.)和文件名中间有一个空格
或
source filename

ming1.sh code 如下:

#!/bin/bash

url="http://www.runoob.com"

ming2.sh code 如下:

#!/bin/bash

#使用 . 号来引用ming1.sh 文件
. ./ming1.sh

#或者使用以下包含文件code
#source ./ming1.sh
echo "网址:$url"

接下来,为ming2.sh添加可执行权限并执行:

$ chmod +x ming2.sh
$./ming2.sh
网址:http://www.runoob.com

注:被包含的文件ming1.sh不需要可执行权限。

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值