为什么我在这个 bash 脚本中得到正确的结果和错误?

为什么我在这个 bash 脚本中得到正确的结果和错误?

我是 bash 脚本和学习“if then”语句的新手。当我运行下面的简单脚本时,它会执行并给出正确的结果,但我仍然收到错误。脚本的名称是testscript.sh。错误如下:“./testscript:第5行:[csh:命令未找到]”

有人能告诉这是什么意思吗?

#! /bin/bash

MY_SHELL="csh"

If ["$MY_SHELL" = "bash"
then
    echo "You seem to like the bash shell."

else

    Then "You don't seem to like the bash shell."

fi

答案1

让我们逐行浏览一下:

#! /bin/bash

MY_SHELL="csh"

到目前为止,一切都很好。

If ["$MY_SHELL" = "bash"

现在这一行有很多错误:

  1. if而不是If- shell 区分大小写,因此fooFOO是不同的
  2. [字符后面应该有一个空格
  3. 您需要]在测试末尾加一个空格。

这意味着这条线应该更像if [ "$MY_SHELL" = "bash" ]

then
    echo "You seem to like the bash shell."
else

这些都很好

    Then "You don't seem to like the bash shell."

你想要一个echo这里。请记住区分大小写。

fi

结果:

#! /bin/bash

MY_SHELL="csh"

if [ "$MY_SHELL" = "bash" ]
then
    echo "You seem to like the bash shell."
else
    echo "You don't seem to like the bash shell."
fi

编辑:一旦你对 shell 脚本更加熟悉,https://www.shellcheck.net/是一个用于验证内容的有用网站。错误输出并不总是清晰的,但它通常有助于指出错误!

答案2

因为括号实际上是命令,所以[前后需要一个空格!]所以:

if [ "$shell" = "bash" ];

还有其他错误我没有指出,因为这是您要求的错误。

相关内容