Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 从文本文件创建数组并为其编制索引_Arrays_Linux_Bash - Fatal编程技术网

Arrays 从文本文件创建数组并为其编制索引

Arrays 从文本文件创建数组并为其编制索引,arrays,linux,bash,Arrays,Linux,Bash,我有一个文本文件,看起来是这样的: :SomeWord:::SomeOtherWord:::MaybeAnotherWord:: 假设我不知道单词之间有多少“:”或者甚至有多少个单词,但每个单词都在“:”之后,我想在Linux终端中获取这个文本文件,并将2个本地变量设置为找到的第一个和第二个单词 我试图从文本文件中创建一个数组,然后获取0和1索引,但它没有像我想象的那样工作 ~# myarray=$(cat mytextfile.txt | tr ":" "\n") ~# for line i

我有一个文本文件,看起来是这样的:

:SomeWord:::SomeOtherWord:::MaybeAnotherWord::
假设我不知道单词之间有多少“:”或者甚至有多少个单词,但每个单词都在“:”之后,我想在Linux终端中获取这个文本文件,并将2个本地变量设置为找到的第一个和第二个单词

我试图从文本文件中创建一个数组,然后获取0和1索引,但它没有像我想象的那样工作

~# myarray=$(cat mytextfile.txt | tr ":" "\n")
~# for line in $myarray ; do echo "[$line]"; done
[SomeWord]
[SomeOtherWord]
[MaybeAnotherWord]
好的,这看起来很有效,但当我试图通过索引抓取时,我得到了意想不到的结果

~# echo ${myarray[0]}
SomeWord SomeOtherWord MaybeAnotherWord
~# echo ${myarray[1]}

~#

我不知道我是否把文件分错了

您没有创建数组,只是创建了一个普通变量。要创建数组,必须再次在
$()
周围写入
()

myarray=($(cat mytextfile.txt | tr ":" "\n"))
也可以写为:

myarray=($(tr ":" "\n" < mytextfile.txt))
myarray=($(tr:“\n”
您没有创建数组,只是创建了一个普通变量。要创建数组,必须再次在
$()
周围写入
()

myarray=($(cat mytextfile.txt | tr ":" "\n"))
也可以写为:

myarray=($(tr ":" "\n" < mytextfile.txt))
myarray=($(tr:“\n”
否,它创建一个长度为3的数组。试试看。如果引用了
$()
“$()”
),那么你是对的。我没有引用它。不确定
IFS
是否导致问题。我在一个新的Bash会话中尝试了你的命令,它成功了。编辑您的答案并向上投票。不,它创建一个长度为3的数组。试试看。如果引用了
$()
“$()”
),那么你是对的。我没有引用它。不确定
IFS
是否导致问题。我在一个新的Bash会话中尝试了你的命令,它成功了。编辑了你的答案并投了赞成票。