我遇到过这行shell脚本的问题:
if [ "$(lsb_release -r -s)" == "16.04" ] || [ "$(lsb_release -r -s)" == "17.04" ]; then
运行脚本时出现“[找不到命令”。我不明白为什么。
+ '[' -f /etc/debian_version ']'
++ lsb_release -r -s
+ '[' 17.04 == 16.04 ']'
++ lsb_release -r -s
+ ' [' 17.04 == 17.04 ']'
./mhn/scripts/install_mongo.sh: line 8: [: command not found
如果在17.04而不是16.04上运行,我只会收到错误。如果我切换语句并首先检查17.04,它将在16.04而不是17.04中断。声明后半部分的内容正在破裂。
答案 0 :(得分:3)
有你的问题:
+ ' [' 17.04 == 17.04 ']'
在最后[
之前,你似乎有某种时髦的空格角色。删除并重新键入它以将其转换为常规的ascii空间。
当您在此处复制粘贴该行或通过非原始github视图查看该行时,它将被转换为常规空间,因此它不会出现在您的帖子中。这也是为什么它在复制粘贴到另一个文件时工作得很好。
这是从github下载(而不是复制粘贴)文件的ShellCheck:
$ shellcheck install_mongo.sh
In install_mongo.sh line 8:
if [ "$(lsb_release -r -s)" == "16.04" ] || [ "$(lsb_release -r -s)" == "17.04" ]; then
^-- SC1018: This is a unicode non-breaking space. Delete and retype it.
答案 1 :(得分:0)
试试这个:
if [ "$(lsb_release -r -s)" == "16.04" -o "$(lsb_release -r -s)" == "17.04" ]; then