2012-06-15 41 views
0

我有了以下行#/ bin/sh的脚本:Shell脚本-x标志含义

if [ ! -x "$TEST_SLAPD" ] 

$TEST_SLAPD是一个.bat文件的完整路径。

我想知道什么-x标志意味着在该if语句的上下文中意味着什么?

回答

5

if只是检查后面的命令的结果。 [不是(至少不总是)操作员,它是一个小实用程序,称为“测试”。

从它的文档:

-x file 
          True if file exists and is exe- 
          cutable. True indicates only 
          that the execute flag is on. If 
          file is a directory, true indi- 
          cates that file can be searched. 

(是的,!显然是否定)

对于类似evualation标志,文档在这里:http://illumos.org/man/1/test

2

! -x条件意味着文件或目录没有为当前用户设置可执行位。这个帮助对于它也适用于目录的事实有点不太清楚,但它说:

$ help test | fgrep -- '-x' 
     -x FILE  True if the file is executable by you. 
+0

如果这是返回false,并且该文件肯定存在它可能与shell脚本尝试执行.bat文件? – Baxter

+0

@Baxter是的。这就是为什么-r和-x通常比使用-f测试文件存在更有用。 –