shell中条件判断if中的-a到-z的意思

简介:

转自http://www.tuicool.com/articles/MbmiAf


[-a file] 如果file存在则为真 

[-b file] 如果file存在且是一个块特殊文件则为真 

[-c file] 如果file存在且是一个字特殊文件则为真 

[-d file] 如果file文件存在且是一个目录则为真 

-d前的!是逻辑非 

例如: 

if [ ! -d $lcd_path/$par_date ] 

表示后面的那个目录不存在,则执行后面的then操作 

[-e file] 如果file文件存在则为真 

[-f file] 如果file存在且是一个普通文件则为真 

[-g file] 如果file存在且已经设置了SGID则为真(SUID 是 Set User ID, SGID 是 Set Group ID的意思) 

[-h file] 如果file存在且是一个符号连接则为真 

[-k file] 如果file存在且已经设置粘制位则为真 

当一个目录被设置为"粘制位"(用chmod a+t),则该目录下的文件只能由 

一、超级管理员删除 

二、该目录的所有者删除 

三、该文件的所有者删除 

也就是说,即便该目录是任何人都可以写,但也只有文件的属主才可以删除文件。 

具体例子如下: 

#ls -dl /tmp 

drwxrwxrwt 4 root    root  ......... 

注意other位置的t,这便是粘连位。 

[-p file] 如果file存在且是一个名字管道(F如果O)则为真 

管道是linux里面进程间通信的一种方式,其他的还有像信号(signal)、信号量、消息队列、共享内存、套接字(socket)等。 

[-r file] 如果file存在且是可读的则为真 

[-s file] 如果file存在且大小不为0则为真 

[-t FD] 如果文件描述符FD打开且指向一个终端则为真 

[-u file] 如果file存在且设置了SUID(set userID)则为真 

[-w file] 如果file存在且是可写的则为真 

[-x file] 如果file存在且是可执行的则为真 

[-O file] 如果file存在且属有效用户ID则为真 

[-G file] 如果file存在且属有效用户组则为真 

[-L file] 如果file存在且是一个符号连接则为真 

[-N file] 如果file存在and has been mod如果ied since it was last read则为真 

[-S file] 如果file存在且是一个套接字则为真 

[file1 –nt file2] 如果file1 has been changed more recently than file2或者file1 exists and file2 does not则为真 

[file1 –ot file2] 如果file1比file2要老,或者file2存在且file1不存在则为真 

[file1 –ef file2] 如果file1和file2指向相同的设备和节点号则为真 

[-o optionname] 如果shell选项“optionname”开启则为真 

[-z string] “string”的长度为零则为真 

[-n string] or [string] “string”的长度为非零non-zero则为真 

[sting1==string2] 如果2个字符串相同。“=”may be used instead of “==”for strict posix compliance则为真 

[string1!=string2] 如果字符串不相等则为真 

[string1<string2] 如果“string1”sorts before“string2”lexicographically in the current locale则为真 

[arg1 OP arg2] “OP”is one of –eq,-ne,-lt,-le,-gt or –ge.These arithmetic binary oprators return true if “arg1”is equal to,not equal to,less than,less than or equal to,greater than,or greater than or equal to“agr2”,respectively.“arg1”and “agr2”are integers. 


本文转自aaa超超aaa 51CTO博客,原文链接:http://blog.51cto.com/10983441/1898699


相关文章
|
6月前
|
人工智能 机器人 Shell
【shell】shell条件判断、循环语句、基本运算符
【shell】shell条件判断、循环语句、基本运算符
|
6月前
|
Shell Linux
Linux下的Shell基础——变量、运算符、条件判断(二)
Linux下的Shell基础——变量、运算符、条件判断(二)
118 0
|
6月前
|
Shell
在Shell脚本中的if语句
在Shell脚本中的if语句
94 1
|
6月前
|
Shell Windows Perl
Shell编程中的条件判断与流程控制
Shell编程中的条件判断与流程控制
88 0
|
6月前
|
Java 大数据 Shell
Shell基础学习---2、运算符、条件判断、流程控制(第一天学习)
大数据开发学习 Shell基础学习---2、运算符、条件判断、流程控制
|
Shell 分布式数据库
shell脚本中if判断‘-a‘ - ‘-z‘含义
shell脚本中if判断‘-a‘ - ‘-z‘含义
|
5月前
|
Shell
Shell脚本之条件语句if总结
Shell脚本之条件语句if总结
|
5月前
|
Shell
Shell [[]] 命令:条件判断的升级版
`[[ ]]` 是 Bash 中增强型的条件判断命令,提供比 `[ ]` 更多的灵活性,如无需引号包裹变量、直接字符串比较及正则支持。例如: ```markdown - 不加引号比较:`[[ -z $str1 ]]` - 逻辑运算:`[[ -z $str1 ]] || [[ -z $str2 ]]` - 正则匹配:`[[ $phone =~ ^1[0-9]{10}$ ]]` ``` 它不支持 `-a` 和 `-o`,但能用 `&&` 和 `||` 进行逻辑操作。用于复杂字符串验证和文件处理时非常有用。
34 0
|
5月前
|
Shell Windows
Shell test [] 命令:条件判断的艺术
`test` 命令在Shell脚本中用于条件检测,涉及数值、字符串和文件比较。例如,`test $a -eq $b` 检查两个数是否相等;`-e` 检查文件是否存在;`-w` 检查文件是否可写。数值比较不支持 `&gt;=` 和 `&lt;=`,需用 `-ge` 和 `-le`。字符串比较时注意空值,使用双引号。逻辑运算包括 `-a`(与)、`-o`(或)和 `!`(非)。文件类型和权限检测也是`test`的重要用途。
57 0
|
5月前
|
Shell Linux BI
linux shell脚本中 if 条件判断
linux shell脚本中 if 条件判断
37 0