bash 变量替换与with-xxx脚本

变量替换

变量替换发生在参数之前。
对比下面两条命令:

$ bash -c 'A=10;bash -c "echo $A"'
10
$ bash -c "A=10;bash -c 'echo $A'" # 输出空

$ bash -c "A=10;bash -c \"echo $A\"" # 输出空

$ bash -c "A=10;bash -c \"echo \$A\""  # 会对""内的参数进行替换
10

with-xxx

通常,我们使用with-xxx来临时性改变环境变量,以便在特定环境下执行命令。
比如,系统中go的版本是1.17,但是有个工程需要使用1.12来执行,则脚本with-go1.12如下:

#!/usr/bin/env bash

mkdir -p ~/gopath1.12
export GOPATH=~/gopath1.12
export GOROOT=~/installed/go1.12
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH

"$@"

执行:

$ with-go1.12 go build main.go

但是,如果带上环境变量就不可以:

$ with-go1.12 A=B go build main.go
./with-go1.12.sh: line 7: A=B: command not found

解决方法:env

#!/usr/bin/env bash

mkdir -p ~/gopath1.12
export GOPATH=~/gopath1.12
export GOROOT=~/installed/go1.12
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH

env -- "$@"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值