shell判断文件是否存在及比较操作

shell判断文件是否存在  

2011-10-27 11:49:53|  分类:学习随记 |  标签:shell  |字号 订阅

   1. shell判断文件,目录是否存在或者具有权限  
   2.   #!/bin/sh
   3.  
   4. myPath="/var/log/httpd/"
   5. myFile="/var /log/httpd/access.log"
   6.  
   7. # 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限
   8. if [ ! -x "$myPath"]; then
   9. mkdir "$myPath"
10. fi
11.  
12. # 这里的-d 参数判断$myPath是否存在
13. if [ ! -d "$myPath"]; then
14. mkdir "$myPath"
15. fi
16.  
17. # 这里的-f参数判断$myFile是否存在
18. if [ ! -f "$myFile" ]; then
19. touch "$myFile"
20. fi
21.  
22. # 其他参数还有-n,-n是判断一个变量是否是否有值
23. if [ ! -n "$myVar" ]; then
24. echo "$myVar is empty"
25. exit 0
26. fi
27.  
28. # 两个变量判断是否相等
29. if [ "$var1" = "$var2" ]; then
30. echo '$var1 eq $var2'
31. else
32. echo '$var1 not eq $var2'
33. fi

-f 和-e的区别
Conditional Logic on Files

-a file exists.
-b file exists and is a block special file.
-c file exists and is a character special file.
-d file exists and is a directory.
-e file exists (just the same as -a).
-f file exists and is a regular file.
-g file exists and has its setgid(2) bit set.
-G file exists and has the same group ID as this process.
-k file exists and has its sticky bit set.
-L file exists and is a symbolic link.
-n string length is not zero.
-o Named option is set on.
-O file exists and is owned by the user ID of this process.
-p file exists and is a first in, first out (FIFO) special file or
named pipe.
-r file exists and is readable by the current process.
-s file exists and has a size greater than zero.
-S file exists and is a socket.
-t file descriptor number fildes is open and associated with a
terminal device.
-u file exists and has its setuid(2) bit set.
-w file exists and is writable by the current process.
-x file exists and is executable by the current process.
-z string length is zero.

是用 -s 还是用 -f 这个区别是很大的!



1、数值

格式:

test "num1" opr "num2"

[ "num1" opr "num2" ]

opr 取值: 

相等:-eq

不等:-ne

大于:-gt

小于:-lt  【l是字母L的小写】

小于等于:-le

大于等于:-ge

2、字符串

格式:

[ str1 opr str2]

[ opr str ]

opr取值:

相等:=

不等:!=

空串:-z

非空串:-n

3、文件

格式:

[ opr file ]

opr取值:

目录: -d

文件: -f

链接: -L

可读: -r

可写: -w

可执行: -x

文件非空: -s


4、逻辑运算符

逻辑与: -a          格式: [ condition1 -a condition2 ]

逻辑或: -o          格式: [ condition1 -o condition2 ]

逻辑否: !             格式: [ ! condition ]

注意:[ 与condition 之间必须有空格,condition与] 之间也必须有空格

注意: -a -o 用在一个[]中间连接多个条件,而 && || 则用在多个[]之间,连接多个[]条件

         非法:  [ condition1 && condition2 ]

一般情况下,运算符是离不开变量的。

http://blog.csdn.net/love__coder/article/details/6745119

http://iqalantam.blog.163.com/blog/static/53935522011927114953548/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下命令来判断文件是否存在: ``` if [ -e 文件路径 ]; then echo "文件存在" else echo "文件不存在" fi ``` 其中,-e 表示判断文件是否存在文件路径需要替换为实际的文件路径。如果文件存在,则输出"文件存在",否则输出"文件不存在"。 ### 回答2: 在shell中,我们可以使用`-f`选项来判断一个文件是否存在。下面是一个示例的shell脚本: ```shell #!/bin/bash filename="example.txt" if [ -f "$filename" ]; then echo "文件存在" else echo "文件不存在" fi ``` 在这个脚本中,我们定义了一个变量`filename`表示要判断文件名。然后使用`-f`选项在if语句中判断文件是否存在。如果文件存在,则输出"文件存在";如果文件不存在,则输出"文件不存在"。 注意,在判断文件是否存在时,需要将文件名放在双引号中,以防止文件名中有空格等特殊字符导致判断出错。 这只是一个简单的示例,您可以根据实际需要,结合其他条件来进一步判断文件的属性和执行相应的操作。 ### 回答3: 在shell中,我们可以使用文件测试符号来判断一个文件是否存在。常用的文件测试符号包括 -e、-f、-d、-s 和 -r。 - 使用 -e 文件测试符号来判断文件是否存在,如果存在则返回真,否则返回假。示例代码如下: ```bash if [ -e 文件路径 ]; then echo "文件存在" else echo "文件不存在" fi ``` - 使用 -f 文件测试符号来判断文件是否存在且为普通文件,如果是普通文件则返回真,否则返回假。示例代码如下: ```bash if [ -f 文件路径 ]; then echo "文件存在且为普通文件" else echo "文件不存在或为其他类型文件" fi ``` - 使用 -d 文件测试符号来判断文件是否存在且为目录,如果是目录则返回真,否则返回假。示例代码如下: ```bash if [ -d 文件路径 ]; then echo "文件存在且为目录" else echo "文件不存在或为其他类型文件" fi ``` - 使用 -s 文件测试符号来判断文件是否存在且不为空,如果不为空则返回真,否则返回假。示例代码如下: ```bash if [ -s 文件路径 ]; then echo "文件存在且不为空" else echo "文件不存在或为空" fi ``` - 使用 -r 文件测试符号来判断文件是否存在且可读,如果可读则返回真,否则返回假。示例代码如下: ```bash if [ -r 文件路径 ]; then echo "文件存在且可读" else echo "文件不存在或不可读" fi ``` 以上代码中,文件路径需要替换为具体的文件路径。根据实际需要选择相应的文件测试符号来判断文件是否存在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值