【发布时间】:2017-07-17 18:49:15
【问题描述】:
我在 bash 脚本中有两个数组 说
ConfigA=("hostname1" "hostname2")
ConfigB=("hostname3" "hostname4")
现在我将一个参数传递给脚本,指定我需要使用哪个数组
为此,我想出了一个 bash 等效的三元运算符,如下所示
int a = (b == 5) ? c : d;
equilvalent in bash
a=$([ "$b" == 5 ] && echo "$c" || echo "$d")
我尝试在我的情况下使用它,如下所示
env=$1
Config=$([ "$env" == "qa" ]] && echo "${ConfigA[@]}" || echo "${ConfigB[@]}")
但是在上述情况下,我得到了输出
hostname1 hostname2
但它不是一个数组,因为当我尝试循环它时,它会同时打印两个。
我也尝试过将数组包围在() 之内
Config=$([ "$env" == "qa" ]] && echo "( ${ConfigA[@]} )" || echo "( ${ConfigB[@]} )")
但这也无济于事。
如何使用三元运算符将数组分配给新变量?
我知道我可以使用 if-else 条件来做到这一点,但我想使用三元运算符来做到这一点
感谢您的帮助
【问题讨论】:
标签: arrays bash ternary-operator