首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用sed删除execute命令后的换行符,并将其保存到数组中

使用sed删除execute命令后的换行符,并将其保存到数组中
EN

Stack Overflow用户
提问于 2019-04-15 03:08:33
回答 2查看 60关注 0票数 0

我正在做一些清单工作,我试图将所有的AWS区域保存在一个数组上,然后将元素一个接一个地显示出来,作为输入菜单。

下面的命令给出了正确的输出,但是当我使用FOR进入数组时,数组长度只有1,因为结果是:

代码语言:javascript
复制
aws ec2 describe-regions --output text|awk -F\t '{print $3}'| sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g'

eu-north-1 ap-south-1 eu-west-3 eu-west-2 eu-west-1 ap-东北-2 ap-东北-1 sa-东-1 ca-central 1 ap-东南-1 ap-东南-2 eu-central 1 us-东-1 us-东-2 us-west-1 us-west-2

下面是我对数组进行归档的方式:

代码语言:javascript
复制
# Get regions
declare -a regions=$(aws ec2 describe-regions --output text | awk -F\t '{print $3}' |  sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /')
echo -e "\nPlease, select the region you would like to query: "

# Print Regions
len=${#regions[@]}
last=$((len+1))
for (( i=0; i<$len; i++ )); do
    echo -e "$i.${regions[$i]}\n" ;
    done
echo -e "$last All of them (this could take a while...O_o)\n"
read region_opt

if [${region_opt}!=${last}] then
    region=(${regions[$region_opt]})

我希望输出中包含的内容如下所示

  1. eu-north-1
  2. ap-south-1
  3. eu-west-3 ....
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-15 04:17:38

数组值前后缺少圆括号,例如,

代码语言:javascript
复制
declare -a ARRAY=(value1 value2 ... valueN)

(参考:https://www.tldp.org/LDP/Bash-Beginners-Guide/html/sect_10_02.htmlhttps://www.gnu.org/software/bash/manual/bash.html)

以下形式也适用,第一种形式(不带declare -a)在GNU's Bash reference manualBash guide for beginnersAdvanced bash-scripting guide中作为示例给出

代码语言:javascript
复制
ARRAY=(value1 value2 ... valueN)
代码语言:javascript
复制
declare ARRAY=(value1 value2 ... valueN)
票数 0
EN

Stack Overflow用户

发布于 2019-04-15 09:53:23

$()是命令替换,只是将任何标准输出转换为字符串并将其分配给变量

如果你说真,那么结果是;

然后让eu-north-1 ap-south-1 eu-west-3...从数组中取出数组,使它在语法上看起来是这样的,然后告诉Bash值就是这样,

代码语言:javascript
复制
regions=($regions)

扩展后,它将是有效的数组语法

代码语言:javascript
复制
 regions=(eu-north-1 ap-south-1 eu-west-3)

则在被""包围并作为Bash eval参数后,将被计算为有效数组

代码语言:javascript
复制
$ eval "regions=($regions)"
$ echo ${regions[0]}
eu-north-1

所以我相信你能自己完成并解决它……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55679025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档