我们被要求在shell中编写一个应该与每个常规shell(dash,ksh,bash)兼容的项目。我们还应该涵盖实用程序realpath
在特定计算机上不可用的可能选项。有没有简单的方法来检查实用程序是否存在?
答案 0 :(得分:1)
检查可执行文件是否可用可以通过多种方式完成。一种简单的方法是运行它,并检查返回码。如果您不想看到错误,请重定向:
realpath yourArgument 2> /dev/null
echo $?
或if
:
realpath yourArgument 2> /dev/null
if [ $? -eq 127 ]; then
#Realpath is missing!
fi
这样,如果realpath
工作并且在路径中,您将打印实际路径,否则您输入if
。注意0
是约定的成功状态,adn 127
是错误代码,表示缺少命令(Thanks @ user1934428,我之前使用的-gt 0
可能会失败,因为realpath
可能会返回非0状态。)
答案 1 :(得分:0)
如果我不理解,你想知道是否存在某个实用程序来检查目录是否存在?如果是这样的话,我总是在几个炮弹中使用这条线,我没有发现问题。
if [ -d "$DIRECTORY" ]; then
# Control will enter here if $DIRECTORY exists.
fi