正确声明变量时出错 '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
但我声明的变量没有任何额外的空格。
在执行这个脚本时,我注意到我创建了两个文件,分别命名为 4
和 var2
为什么我会收到这样的错误?
您正在 运行 使用 sh
, not bash
编写脚本。例如,您可能正在做 sh s1
。您应该执行 ./s1
以便系统将使用 shebang (#!/bin/bash
) 来确定 运行 脚本使用哪个解释器。
我不确定sh
如何解释double-parens(( ))
,但它肯定与Bash不一样,所以它试图运行名为 var1
的命令并将输出重定向到名为 var2
.
的文件
至于为什么你有一个名为 4
的文件,你可能在某个时候尝试添加一个美元符号 $
。
我有一个名为“s1”的文件,其中包含以下内容:
#!/bin/bash
var1=5
var2=4
if (( var1 > var2 ))
then
echo "$var1 more than $var2"
fi
执行文件时,我得到以下信息:
s1: 4: var1: not found
大多数情况下,这种错误是由于变量声明不正确造成的,例如:
var1 = 5
但我声明的变量没有任何额外的空格。
在执行这个脚本时,我注意到我创建了两个文件,分别命名为 4
和 var2
为什么我会收到这样的错误?
您正在 运行 使用 sh
, not bash
编写脚本。例如,您可能正在做 sh s1
。您应该执行 ./s1
以便系统将使用 shebang (#!/bin/bash
) 来确定 运行 脚本使用哪个解释器。
我不确定sh
如何解释double-parens(( ))
,但它肯定与Bash不一样,所以它试图运行名为 var1
的命令并将输出重定向到名为 var2
.
至于为什么你有一个名为 4
的文件,你可能在某个时候尝试添加一个美元符号 $
。