我想检查一下是否在系统上安装了nodejs。我收到了这个错误:
错误:找不到命令。
我该如何解决?
#!/bin/bash
if [ nodejs -v ]; then
echo "nodejs found"
else
echo "nodejs not found"
fi
答案 0 :(得分:10)
您可以使用command
bash builtin:
if command -v nodejs >/dev/null 2>&1 ; then
echo "nodejs found"
echo "version: $(nodejs -v)"
else
echo "nodejs not found"
fi
答案 1 :(得分:2)
如果您只想检查命令是否存在,请使用哪个命令。如果调用该命令,它将返回补丁,如果未找到,则返回任何内容
if [ "$(which openssl)" = "" ] ;then
echo "This script requires openssl, please resolve and try again."
exit 1
fi
答案 2 :(得分:0)
答案 3 :(得分:0)
命令的名称为node
,而不是nodejs
返回stdout命令的路径(如果存在)
if [ $(which node 2>/dev/null) ]; then
echo "nodejs found"
else
echo "nodejs not found"
fi
答案 4 :(得分:0)
这不是OP要求的(将近3年前!),但是对于想要检查多个依赖项的任何人而言:
#!/bin/bash
echo -n "Checking dependencies... "
for name in youtube-dl yad ffmpeg
do
[[ $(which $name 2>/dev/null) ]] || { echo -en "\n$name needs to be installed. Use 'sudo apt-get install $name'";deps=1; }
done
[[ $deps -ne 1 ]] && echo "OK" || { echo -en "\nInstall the above and rerun this script\n";exit 1; }
这是它的工作方式。首先,我们打印一行以表示我们正在检查依赖关系。第二行开始“ for name in ...”循环,在其中放入我们要检查的依赖项,在此示例中,我们将检查youtube-dl,yad和ffmpeg。循环开始(以“ do”开始),下一行使用bash命令“ which”检查每个命令是否存在。如果已经安装了依赖项,则不执行任何操作,我们跳到循环中的下一个命令。如果确实需要安装,则会显示一条消息,并将变量“ deps”设置为1(deps =依赖项),然后我们继续执行下一个命令进行检查。在检查了所有命令之后,最后一行通过检查deps变量来检查是否需要任何依赖项。如果未设置,则将“确定”追加到最初显示“检查依赖项...”的行,然后继续(假设这是脚本的第一部分)。如果已设置,它将打印一条消息,要求安装依赖项并重新运行脚本。然后退出脚本。
echo命令看起来很复杂,但是它们对于在终端上提供干净的输出是必需的。这是一个屏幕截图,显示了第一次运行时不满足依赖项,但是第二次运行时就满足了。
PS如果将其另存为脚本,则需要与脚本位于同一目录,然后键入./{name_of_your_script},并且必须是可执行文件。