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
将正确地失败并出现语法错误。