Arrays 从bash中的文件中读取成对数组

Arrays 从bash中的文件中读取成对数组,arrays,bash,Arrays,Bash,我有一个bash脚本,它将bash数组分成对,并在任意一个元素上进行匹配 declare-a arr=( “苹果”“水果” “卷心菜”“蔬菜” ) 对于((i=0;i我认为,如果您相信您的输入,您可以: IFS=' \n' eval props=($(<stuff.log)) 无论如何,我想我会犹豫在生产代码中使用这种方法。最好编写一个适当的完全解析器,将“考虑在内,并逐字符读取输入字符 如果要将文件读入数组,请使用mapfile或readarray命令(它们是完全相同的命令).我会看一

我有一个bash脚本,它将bash数组分成对,并在任意一个元素上进行匹配

declare-a arr=(
“苹果”“水果”
“卷心菜”“蔬菜”
)

对于((i=0;i我认为,如果您相信您的输入,您可以:

IFS=' \n' eval props=($(<stuff.log))
无论如何,我想我会犹豫在生产代码中使用这种方法。最好编写一个适当的完全解析器,将
考虑在内,并逐字符读取输入字符


如果要将文件读入数组,请使用
mapfile
readarray
命令(它们是完全相同的命令).

我会看一看,谢谢!这对提高我自己很有帮助。谢谢。在你进入
bash
的文本操作之前,我建议你先阅读一些基本的
awk
来处理你未来的问题。谢谢你的回答。我想我不明白该怎么做。对不起,我对bash真的很陌生。你能如果你不介意的话,给我一个工作示例?哦,我明白了。似乎我可以用
echo“${props[I+2]}”
选择任何我想要的元素,但是这是按顺序进行的,例如,对于
50
项,我必须使用
echo“${props[I+50]}“
,对吗?因为我在数组文件中大约有120行,每行有3列,所以使用起来方便吗?我在想一些事情,比如用3个增量读取每行,然后用
${props[I]}
${props[I+1]}
${props[I+2]}选择每行的每个元素。”
因此,我只能使用
i0、1和2
而不是像使用
I+120
那样用于第120行的第一项。有许多在线页面解释bash中的数组是如何工作的。要访问
props
数组中的第50个元素,请使用
${props[49]
。如果
I
是整数值,例如
I=5
,则
${props[i+1]}
首先将
i+1
展开为
5+1
,调用
epxr
计算它(结果=6),然后调用
${props[6]}
扩展后。
我有120行…3列
-然后相应地选择抽象。Bash没有2D数组。我不建议在Bash数组中存储任何内容,因为它们很慢,请使用标准unix工具执行所需的所有解析(
comm
join
awk
sed
cut
等)是的,也许我应该用一下。谢谢。
IFS=' \n' eval props=($(<stuff.log))
IFS=' \n' props=($(<stuff.log))
IFS='\n' props=($(printf "%s\n" "${props[@]}" | sed 's/^"//;s/"$//'))