【发布时间】:2021-08-18 03:45:19
【问题描述】:
我正在编写一个 shell 脚本,我需要在执行任何操作之前检查是否安装了一些依赖项。我发现我可以使用which <package> 来查看它是否已安装。问题是,当找不到该依赖项时,它会在控制台的输出中抛出以下错误:
which: no abc in (/home/pace/.emacs.d/bin:/usr/local/bin:/home/pace/.emacs.d/bin:/usr/local/bin:/home/pace/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:...)
我想避免这样的输出,因为我已经在某些事情失败时显示了错误消息。如何避免which 写任何东西?
function is_installed() {
if [[ ! $(which $1) ]]
then
echo "[ERROR]: $1 $2"
exit 1
fi
}
【问题讨论】:
-
这些问题都没有回答我的问题。我想避免在找不到任何东西时抛出错误,并且通过我自己的错误跟踪,我已经知道如何找到路径。如果您删除问题的负面反馈,我将不胜感激,因为它不是重复的。
-
which仍然是错误的解决方案,除非您专门固定到您确切知道which which的平台。可移植的 POSIX 解决方案是command(或者可能是type)。见unix.stackexchange.com/questions/85249/…
标签: linux bash shell console-output