已安装NodeJ但无法执行它。用bash脚本搞砸了

时间:2016-08-04 15:27:00

标签: node.js linux bash shell

我正在学习bash脚本,并且正在尝试编写一个脚本来检查是否安装了nodeJs,如果没有,则安装它。

NodeJs安装在我的系统中。在搞砸之前,我在执行node -v时得到的输出是v4.x.x。

然后,我关注this post并在我的脚本中编写了以下代码:

#!/bin/bash
if [ command -v node >/usr/bin/node 2>&1 ]; then
    # save node version in a string variable.
    STRING=cat | node -v

    echo "NodeJs version: " ${STRING}
else
    echo "NodeJs not found."
fi

我执行了我的脚本(testScript.sh),但现在当我运行node -v时,我得到的输出是:

/usr/bin/node: line 1: ./testScript.sh:: No such file or directory

我无法弄清楚我打破了什么......有什么想法吗?非常感谢。

1 个答案:

答案 0 :(得分:1)

在您的脚本中,您尝试将command -v node的输出重定向到文件/usr/bin/node。这不是你想要的。该脚本应该是:

#!/bin/bash
if [ command -v node >/dev/null 2>&1 ]; then
    # save node version in a string variable.
    STRING=cat | node -v

    echo "NodeJs version: " ${STRING}
else
    echo "NodeJs not found."
fi

在此处详细了解/dev/nullhttp://man7.org/linux/man-pages/man4/null.4.html

您似乎已使用命令/usr/bin/node的内容覆盖了二进制文件command -v node。查看命令的输出:file /usr/bin/node。它应该是ELF文件。如果输出中有ASCII text,那么您确实已经替换了二进制文件。