You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何HELLO=WORLD echo $HELLO命令无法输出变量值?

为什么HELLO=WORLD echo $HELLO输出为空?

这是因为Shell的命令处理顺序导致的:

  • Shell在执行整条命令前,会先完成所有变量展开操作。当你输入HELLO=WORLD echo $HELLO时,当前Shell会先解析$HELLO,但此时这个变量在当前Shell环境中还未被定义,所以直接展开为空字符串。
  • 变量展开完成后,Shell才会执行HELLO=WORLD echo——也就是给echo进程设置HELLO=WORLD的环境变量,但此时echo的参数已经是空的了,自然输出为空。

如果想要达到预期效果,有两种常用写法:

  • 使用子Shell,让变量展开在新Shell中进行:
    HELLO=WORLD sh -c 'echo $HELLO'
    
    单引号会阻止当前Shell解析$HELLO,让子Shell在设置环境变量后再展开变量。
  • 在当前Shell中先设置变量,再执行命令:
    HELLO=WORLD; echo $HELLO
    
    分号将两个命令分隔开,变量先在当前Shell中生效,后续的echo就能读取到值。

内容的提问来源于stack exchange,提问作者Fredster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 06:55:20