为何在Bash中执行A=1 echo $A无法输出预期值1?
在Bash中
A=1 echo $A输出空白的原因 这是因为Bash处理命令的顺序有明确规则:
- 第一步,Bash会先对命令里的
$A做参数展开——这时候当前shell环境里的A还没被赋值,值为空,所以$A直接被替换成空白字符串。 - 第二步,才会把
A=1这个环境变量传递给后续的echo进程,但此时echo要输出的参数已经是空白了,自然就输出空白行。
如果想要得到预期的1,有两种常用写法:
- 用分号把赋值和
echo拆成两个独立命令,让赋值先在当前shell生效:A=1; echo $A - 让子shell处理变量展开,确保
A=1的环境变量已经设置后再解析$A:A=1 bash -c 'echo $A'
内容的提问来源于stack exchange,提问作者Daniel McLaury
相关产品推荐
相关产品推荐

