6.4 Bash的条件表达式

评论 0 浏览 0 2023-01-26

条件表达式被[[复合命令(见5.2 条件性结构)以及test[内置命令(见4.1 Bourne Shell内置程序)使用。 test[命令根据参数的数量决定其行为;关于任何其他命令的具体操作,请参见这些命令的描述。

表达式可以是一元的或二元的,并由以下主语组成。一元表达式通常被用来检查文件的状态。 还有字符串运算符和数字比较运算符。当在表达式中使用时,Bash 会专门处理几个文件名。如果Bash运行的操作系统提供了这些特殊的文件,Bash就会使用它们;否则它就会用这种行为在内部模拟它们:如果其中一个主语的file参数的形式是/dev/fd/N,那么就会检查文件描述符N。如果对其中一个主要参数的file参数是/dev/stdin/dev/stdout、或/dev/stderr中的一个,则分别检查文件描述符0、1或2。

当与[[一起使用时,‘<’和‘>’操作符使用当前语言环境按字典顺序排序。 test命令使用ASCII排序。

除非另有说明,否则对文件进行操作的主程序遵循符号链接,并对链接的目标而不是链接本身进行操作。

-a file

如果file存在,则为 "真"。

-b file

如果file存在,并且是一个块特殊文件,则为真。

-c file

如果file存在并且是一个特殊字符的文件,则为 "真"。

-d file

如果file存在并且是一个目录,则为 "真"。

-e file

如果file存在,则为 "真"。

-f file

如果file存在,并且是一个普通的文件,则为真。

-g file

如果file存在并且它的set-group-id位被设置,则为真。

-h file

如果file存在并且是一个符号链接,则为 "真"。

-k file

如果file存在,并且其"sticky"位被设置,则为真。

-p file

如果file存在并且是一个命名的管道(FIFO),则为 "真"。

-r file

如果file存在并且可读,则为 "真"。

-s file

如果file存在,并且大小大于0,则为真。

-t fd

如果文件描述符fd是开放的,并且是指一个终端,则为真。

-u file

如果file存在,并且其set-user-id位被设置,则为真。

-w file

如果file存在并且是可写的,则为真。

-x file

如果file存在并且是可执行的,则为真。

-G file

如果file存在,并且被有效的组ID所拥有,则为真。

-L file

如果file存在并且是一个符号链接,则为 "真"。

-N file

如果file存在,并且在上次读取后被修改过,则为真。

-O file

如果file存在,并且为有效用户ID所拥有,则为真。

-S file

如果file存在并且是一个套接字,则为 "真"。

file1 -ef file2

如果file1file2指的是相同的设备和inode号,则为真。

file1 -nt file2

如果file1file2新(根据修改日期),或者如果file1存在而file2不存在,则为真。

file1 -ot file2

如果file1file2更老,或者file2存在而file1不存在,则为真。

-o optname

如果shell选项optname被启用,则为 "真"。 选项列表出现在set内置程序的-o选项的描述中(见1 Set 内置程序)。

-v varname

如果shell变量varname被设置(已被赋值),则为 "真"。

-R varname

如果shell变量varname被设置了,并且是一个名字的引用,则为真。

-z string

如果string的长度为零,则为 "真"。

-n string
string

如果string的长度不为零,则为 "真"。

string1 == string2
string1 = string2

如果字符串相等,则为真。 当与[[命令一起使用时,这将执行上述的模式匹配(见5.2 条件性结构)。

=’应与test命令一起使用,以达到POSIX的一致性。

string1 != string2

如果字符串不相等,则为 "真"。

string1 < string2

如果string1string2之前按字母顺序排序,则为真。

string1 > string2

如果string1string2之后按字母顺序排序,则为真。

arg1 OP arg2

OP是‘-eq’、‘-ne’、‘-lt’、‘-le’、‘-gt’或‘-ge’之一。如果arg1等于、不等于、小于、小于或等于、大于、大于或等于arg2,这些算术二元运算符分别返回真。arg1arg2可以是正整数或负整数。 当与[[命令一起使用时,arg1arg2会作为算术表达式进行计算(见6.5 shell算术)。

最后更新2023-02-20
0 个评论
上一篇: 6.3 交互式shell
下一篇: 6.5 shell算术
当前页面书签