正确声明变量时出错 'not found'

Error 'not found' when declaring variables correctly

我有一个名为“s1”的文件,其中包含以下内容:

#!/bin/bash
var1=5
var2=4
if (( var1 > var2 ))
 then 
  echo "$var1 more than $var2"
fi

执行文件时,我得到以下信息:

s1: 4: var1: not found

大多数情况下,这种错误是由于变量声明不正确造成的,例如:

var1 = 5

但我声明的变量没有任何额外的空格。
在执行这个脚本时,我注意到我创建了两个文件,分别命名为 4var2 为什么我会收到这样的错误?

您正在 运行 使用 sh, not bash 编写脚本。例如,您可能正在做 sh s1。您应该执行 ./s1 以便系统将使用 shebang (#!/bin/bash) 来确定 运行 脚本使用哪个解释器。

我不确定sh如何解释double-parens(( )),但它肯定与Bash不一样,所以它试图运行名为 var1 的命令并将输出重定向到名为 var2.

的文件

至于为什么你有一个名为 4 的文件,你可能在某个时候尝试添加一个美元符号 $