【发布时间】:2014-12-15 10:10:23
【问题描述】:
我正在尝试在 bash 中调用命令之前设置一个变量(在 Mac 上):
BRANCH=test echo "$BRANCH"
但我得到一个空的回声。
printenv 也没有其他同名变量:
$ printenv | grep BRANCH
$
我做错了什么?
【问题讨论】:
标签: bash environment-variables
我正在尝试在 bash 中调用命令之前设置一个变量(在 Mac 上):
BRANCH=test echo "$BRANCH"
但我得到一个空的回声。
printenv 也没有其他同名变量:
$ printenv | grep BRANCH
$
我做错了什么?
【问题讨论】:
标签: bash environment-variables
这是正确的方法:
BRANCH='test' bash -c 'echo "$BRANCH"'
test
要执行echo 命令,您需要bash -c 在分配后执行它。
【讨论】:
BRANCH='test' bash -c 'echo "$BRANCH"'和BRANCH='test' echo "$BRANCH"有什么区别?
( BRANCH='test' && echo "$BRANCH" ) 我猜在第一种情况下分配不会被处理,除非bash -c 派生一个新的子进程。
$BRANCH 被扩展在 echo 开始之前,echo 可以查看其环境。其次,echo 无论如何都会忽略它的环境。这里没有必要也没有能力使用环境变量,所以只需使用echo test。