Linux Bash变量分配不应工作

Linux Bash变量分配不应工作,linux,bash,Linux,Bash,有人能告诉我我在这方面做错了什么吗 它给了我以下错误: status=0 $status=1 echo $status Bash的任务不能有一块钱。bash中的变量替换类似于C中的宏扩展;它们发生在任何解析之前。例如,这个可怕的东西起作用了: 0=1: command not found Bash的任务不能有一块钱。bash中的变量替换类似于C中的宏扩展;它们发生在任何解析之前。例如,这个可怕的东西起作用了: 0=1: command not found 此行正常-它将值0分配给变量

有人能告诉我我在这方面做错了什么吗

它给了我以下错误:

status=0
$status=1

echo $status

Bash的任务不能有一块钱。bash中的变量替换类似于C中的宏扩展;它们发生在任何解析之前。例如,这个可怕的东西起作用了:

 0=1: command not found

Bash的任务不能有一块钱。bash中的变量替换类似于C中的宏扩展;它们发生在任何解析之前。例如,这个可怕的东西起作用了:

 0=1: command not found

此行正常-它将值0分配给变量
状态

foof="[ -f"
if $foof .bashrc ] ; then echo "hey"; fi
这是错误的:

status=0
通过将
$
放在变量名前面,可以解除对它的引用,即获取它的值,在本例中为
0
。换句话说,
bash
正在扩展您编写的内容:

$status=1
这毫无意义,因此出现了错误

如果您的目的是为状态变量重新指定一个新值
1
,则只需按照与原始赋值相同的方式执行即可:

0=1

此行正常-它将值0分配给变量
状态

foof="[ -f"
if $foof .bashrc ] ; then echo "hey"; fi
这是错误的:

status=0
通过将
$
放在变量名前面,可以解除对它的引用,即获取它的值,在本例中为
0
。换句话说,
bash
正在扩展您编写的内容:

$status=1
这毫无意义,因此出现了错误

如果您的目的是为状态变量重新指定一个新值
1
,则只需按照与原始赋值相同的方式执行即可:

0=1

在bash中实际使用变量时,仅使用
$
。在分配或重新分配时忽略它

e、 g


在bash中实际使用变量时,仅使用
$
。在分配或重新分配时忽略它

e、 g


同样,这件丑陋的事情也会起作用:

status=0
status2=1
status="$status2"

同样,这件丑陋的事情也会起作用:

status=0
status2=1
status="$status2"

或者,您可以使用如下参数扩展实现额外级别的间接寻址:
a=1;状态='a';echo${!status}
或者您可以使用如下参数扩展实现额外级别的间接寻址:
a=1;状态='a';echo${!status}
0=1
在语法上有很好的意义,但它不会达到用户的目的。如果用户的路径中存在名为
0=1
的可执行文件,则将运行该文件。@chepner-是的,非常正确。
0=1
在语法上有很好的意义,但它不会按照用户的意图运行。如果用户路径中存在名为
0=1
的可执行文件,则将运行该文件。@chepner-是的,非常正确。不太复杂;解析首先完成,但是
[
不是语法(它是一个命令名),所以它可以按预期工作。
foo=if;$foo[-f.bashrc];然后echo“嘿”;fi
将正确地失败,并出现语法错误。没有那么复杂;解析首先完成,但
[
不是语法(它是一个命令名),因此它可以正常工作。
foo=if;$foo[-f.bashrc];然后echo“hey”;fi
将正确地失败并出现语法错误。