我在Unix中探测。
我想知道这意味着什么?
type ant 1>/dev/null
moduledir=`dirname $0`
感谢。
答案 0 :(得分:1)
1>/dev/null
将STDOUT
(标准输出)重定向到/dev/null
。这意味着在运行type ant
命令后,屏幕上只会显示错误(如果存在)。
第二行将moduledir
变量设置为dirname $0
命令的输出,$0
是执行的文件名。
type
基本上告诉你它的参数类型。在您的情况下,它会输出ant
的路径,如下所示:ant is /usr/bin/ant
>
用于流重定向。并1>
重定向标准输出。
详细了解标准流here。
如果一切正常,最后type ant 1>/dev/null
应该输出任何内容。
答案 1 :(得分:1)
type
命令(在UNIX下,不要将其与MS-DOS / Windows'CMD.EXE
混淆)将显示如果执行命令将如何解释。
以这种方式使用type
,如果找不到ant not found
命令/可执行文件,则会打印错误消息(例如ant
)。正如其他人所说,1>/dev/null
(或简称>/dev/null
)将该命令写入标准输出的消息重定向到“无处”,即它们不会打印在终端/控制台上。写入标准错误流的消息仍将/将发生。看起来,该行是为了检查是否可以执行/找到ant
,但是没有提供对(例如)中止脚本的相应检查,它可能是这样的(取决于你的shell,但它看起来像是一个bourne shell的味道):
type ant > /dev/null
[ $? -ne 0 ] && exit 1
另一个注意事项:使用bash
类型命令永远不会将任何输出写入标准错误流,即使消息... not found
也会写入标准输出。因此,即使在出现错误的情况下,该命令也不会输出任何内容(因为该片段无论如何都被用作检查,因此显示消息似乎是合理的。)
最后,
moduledir=`dirname $0`
行将变量moduledir
中当前正在执行的脚本的目录名称存储起来。您稍后可以像$moduledir
一样引用它,例如:echo "The directory is: $moduledir
。