意外的'然后'bash脚本

joa*_*aop 1 bash if-statement

我该如何解决这个错误?我的语法没有任何问题.

ipcheck() {
  echolog "[INFO] Enabling IP Forwarding..."
  sudo echo 1 > /proc/sys/net/ipv4/ip_forward
  if[$(cat /proc/sys/net/ipv4/ip_forward) == "0"]
    then
    echolog "[CRITICAL] Could not enable IP Forwarding!"
    exit 0
  fi
  echolog "[INFO] IP Forwarding successfully enabled!"
}
Run Code Online (Sandbox Code Playgroud)

我知道这是一个非常基本的脚本,但它是一个更大的脚本的一部分.该错误发生在then语句中.

Car*_*rum 5

如果你来自其他编程语言,那么shell脚本往往比你可能习惯的空间更敏感(读:C).你的if生产线有问题.您可能正在寻找:

if [ $(cat /proc/sys/net/ipv4/ip_forward) == "0" ]
Run Code Online (Sandbox Code Playgroud)

这里要记住的是,[它不是任何特殊if语法的一部分- 它是程序名称(有时是内置的shell).如果你这样想,你可以看到命令行解析器需要如何分离它.类似地,[命令(或内置)期望将结束]与其他参数分开,因此在它之前也需要一个空格.