arrays - 用冒号分割字符串

标签 arrays bash unix

我试图用 ':' 拆分字符串并将其存储在一个数组中,因此看起来像 a:b:c:d:x:y:z 的内容将存储在一个数组中,该数组包含 a, b、c、d、x、y、z 作为元素。

我写的是

IFS = ':' read - r -a ARR <<< "$INFO" 

其中 INFO 是从包含上述格式的多个字符串的文件中读取的字符串。

我收到一条错误消息“IFS:找不到命令”。

我是这样读的:

while read INFO

最后,当我尝试将数组中的第一个元素分配给变量时,出现错误:

export NAME = $INFO[0] 

我在这里得到的两个错误是 export: '=' not a valid identifierexport: '[0]: not a valid identifier

我是 bash 的新手。

最佳答案

这里的基本问题是您的代码在不允许的地方包含空格。例如,以下是非常好的语法(尽管它不符合 POSIX conventions on variable naming,它建议将小写字符用于应用程序定义的名称):

info_string='a:b:c:d:x:y:z'
IFS=: read -r -a info_array <<< "$info_string" 

同样,在取消引用时,您需要大括号,并且(同样)不能在 = 周围放置空格:

name=${info_array[0]}

关于arrays - 用冒号分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45361053/

相关文章:

ios - 将数组分成具有相似对象的新数组 - iOS

bash - 在 bash 中通过 ftp 从列表上传文件

javascript - 在 Javascript 中映射二维数组

c++ - 经典数组与 std::array

c - 结构内部指向动态二维数组的指针

bash - 通过 ssh 运行具有嵌套引号的 shell 命令

bash - bash echo 命令可以返回非零退出代码吗?

linux - Bash、Shell、UXTerm 和终端之间的区别

unix - 如何编写每 N 行仅输出一行的 unix 过滤器

unix - 如何通过 UNIX mailx 命令发送电子邮件?