Bash变量序列扩展(字母范围)

Bash变量序列扩展(字母范围),bash,variable-expansion,Bash,Variable Expansion,给定两个我想串联的变量: # valid COUNTRIES_A="ad,af,ai,ag,al,am,ao,ar,ax,az," COUNTRIES_B="ba,bd,bf,bh,bi,bj,bn,br,bt,bw" COUNTRIES="${COUNTRIES_A},${COUNTRIES_B}" 是否有一个序列扩展可以更优雅地实现这一点 # invalid but essentially ... COUNTRIES="${COUNTRIES_{A..B}}" 这应该行得通 $ ech

给定两个我想串联的变量:

# valid
COUNTRIES_A="ad,af,ai,ag,al,am,ao,ar,ax,az,"
COUNTRIES_B="ba,bd,bf,bh,bi,bj,bn,br,bt,bw"

COUNTRIES="${COUNTRIES_A},${COUNTRIES_B}"
是否有一个序列扩展可以更优雅地实现这一点

# invalid but essentially ...
COUNTRIES="${COUNTRIES_{A..B}}"
这应该行得通

$ echo $COUNTRIES_{A..B}

ad,af,ai,ag,al,am,ao,ar,ax,az ba,bd,bf,bh,bi,bj,bn,br,bt,bw
那么,你能做什么

$ COUNTRIES=$(echo $COUNTRIES_{A..B})
如果您想要完整的csv列表,请将管道连接到
tr'',“

这应该可以

$ echo $COUNTRIES_{A..B}

ad,af,ai,ag,al,am,ao,ar,ax,az ba,bd,bf,bh,bi,bj,bn,br,bt,bw
那么,你能做什么

$ COUNTRIES=$(echo $COUNTRIES_{A..B})

如果你想要一个完整的csv列表,管道到
tr'',“

该死的,我应该想到这一点-这正是我想要的。在以后使用之前,只需展开并分配变量/字符串。好极了!这里的次要添加-空白需要减轻,所以请考虑更新到$<代码>国家=$(ECHORACKEFICONESIV{A.B})TR -D′:(空间:)/COD>如果原始字符串中有空格,则删除空间可能会产生不良后果。您的目的是在两者之间使用逗号,对吗?@codeforester-正确,空格管理是本例中给出的示例特有的。预期的输出不应该添加空格,这将在当前形式的给定解决方案中发生。我不推荐这种方法。没有办法正确引用得到的参数展开式。该死,我应该想到这一点——这正是我想要的。在以后使用之前,只需展开并分配变量/字符串。好极了!这里的次要添加-空白需要减轻,所以请考虑更新到$<代码>国家=$(ECHORACKEFICONESIV{A.B})TR -D′:(空间:)/COD>如果原始字符串中有空格,则删除空间可能会产生不良后果。您的目的是在两者之间使用逗号,对吗?@codeforester-正确,空格管理是本例中给出的示例特有的。预期的输出不应该添加空格,这将在当前形式的给定解决方案中发生。我不推荐这种方法。无法正确引用由此产生的参数扩展。我认为代码可读性对于软件工程师来说非常重要。您可以很容易地看到这是如何改进一个相当简单的脚本的:您将“优雅”与“极简主义”混为一谈。我会毫不犹豫地使用第一种方法。@chepner没有任何混淆,我不能更强烈地反对你的观点。我实际上并不是指你的代码,但看了之后,它提出了一个问题:为什么你要使用单独的
COUNTRIES\u X
变量,当您对它们所做的只是将它们连接到单个变量中时。首先,您可以定义一个数组来存储字符串列表,数组分配可以按行对条目进行分组以提高可读性。原因有二:1)它允许快速目视检查列表中是否有当前国家(例如印度/印度),比目视检查很长的数组要快得多。当然,如果按顺序维护阵列,这可以得到改进,但这是开销。2) 它允许
sed
优化。在
O(n^x)
中,遍历一个数组与遍历一个数组的子集相比,我认为代码可读性对于软件工程师来说非常重要。您可以很容易地看到这是如何改进一个相当简单的脚本的:您将“优雅”与“极简主义”混为一谈。我会毫不犹豫地使用第一种方法。@chepner没有任何混淆,我不能更强烈地反对你的观点。我实际上并不是指你的代码,但看了之后,它提出了一个问题:为什么你要使用单独的
COUNTRIES\u X
变量,当您对它们所做的只是将它们连接到单个变量中时。首先,您可以定义一个数组来存储字符串列表,数组分配可以按行对条目进行分组以提高可读性。原因有二:1)它允许快速目视检查列表中是否有当前国家(例如印度/印度),比目视检查很长的数组要快得多。当然,如果按顺序维护阵列,这可以得到改进,但这是开销。2) 它允许
sed
优化。在
O(n^x)