首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash for循环没有以预期的方式循环通过数组

Bash for循环没有以预期的方式循环通过数组
EN

Stack Overflow用户
提问于 2015-06-18 01:59:38
回答 1查看 29关注 0票数 0

我有一个变量'roles‘,它包含以下数据:

构造函数、解构函数、Transformer

我正在遍历一个数组,我想在角色信息旁边追加一个用户名变量,但是我得到了“坏”的结果:

代码语言:javascript
复制
   echo $roles
   echo "$roles" 
   array=$(echo "$roles" | tr "," "\n")
   for i in $array
   do
      echo $user_id - "$i"
   done

然而,我的输出是这样的:

代码语言:javascript
复制
Constructor,Deconstructor,Transformer
Constructor,Deconstructor,Transformer
bman - Constructor
Deconstructor
Transformer

输出应如下所示:

代码语言:javascript
复制
bman - Constructor
bman - Deconstructor
bman - Transformer
EN

回答 1

Stack Overflow用户

发布于 2015-06-18 02:02:03

array=$(echo "$roles" | tr "," "\n")不创建数组。

它创建了三行文本。

您想要的是array=($(echo "$roles" | tr "," "\n")),但是如果任何字段包含空格,它将不能正常工作。

比这更好的方法是使用:

代码语言:javascript
复制
IFS=, read -a array <<< "$roles"

这对于包含空格的字段是安全的。

此外,$array也不是从数组中获取所有元素的方式。为此,您可以使用"${array[@]}"

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

https://stackoverflow.com/questions/30898958

复制
相关文章

相似问题

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