我们被要求在 shell 中编写一个应该与每个通用 shell(dash、ksh、bash)兼容的项目。我们还应该涵盖该实用程序realpath
在特定机器上不可用的可能选项。有什么简单的方法可以检查该实用程序是否存在?
问问题
357 次
2 回答
1
检查可执行文件是否可用可以通过多种方式完成。一种简单的方法是运行它,然后检查返回码。如果您不想看到错误,请将其重定向:
realpath yourArgument 2> /dev/null
echo $?
或在if
:
realpath yourArgument 2> /dev/null
if [ $? -eq 127 ]; then
#Realpath is missing!
fi
这种方式如果realpath
有效并且在路径中,您将打印真实路径,否则您输入if
. 注意0
是商定的成功状态,adn127
是指示缺少命令的错误代码(感谢@user1934428,我之前使用过-gt 0
可能会失败,因为realpath
可能会返回非 0 状态。)
于 2018-03-26T09:33:07.503 回答
0
如果我没有理解不好,你想知道某个实用程序是否存在来检查目录是否存在?。如果是这样,我总是在几个 shell 中使用这条线,我没有发现问题。
if [ -d "$DIRECTORY" ]; then
# Control will enter here if $DIRECTORY exists.
fi
于 2018-03-25T13:08:38.090 回答