关于bash:连接两个环境变量

Connect two environment variable

本问题已经有最佳答案,请猛点这里访问。

我有两个环境变量,一个是:

1
 export COMMAND='sudo curl https://transfer.sh/n32gU/dockkub -o dockkub && kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address='

另一种是:

1
export EXIP='123.3.765.231'

如何将其连接到如下所示:

1
sudo curl https://transfer.sh/n32gU/dockkub -o dockkub && kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=123.3.765.231

和存储到执行变量


您只需将它们与bash中的每个字符串连接起来:

1
export EXEC="$COMMAND$EXIP"

等效替代方案为

1
2
3
export EXEC="${COMMAND}${EXIP}"
export EXEC="$COMMAND""$EXIP"
export EXEC="${COMMAND}""${EXIP}"

注意,按照惯例,系统使用大写变量。好的做法是用小写字母拼写变量。

执行$EXEC的替代方案

似乎您希望使用$EXEC作为命令。在这种特殊情况下,呼叫$EXEC是有效的,但由于以下问题,不建议这样做:

  • 带空格的参数是不可能的。
  • *?这样的符号将被扩展。

编写和调用命令的更好方法是函数:

1
2
3
4
5
6
myfunction() {
    sudo curl https://transfer.sh/n32gU/dockkub -o dockkub &&
    kubeadm init --pod-network-cidr=10.244.0.0/16 \
                 --apiserver-advertise-address="$1"
}
export -f myfunction