如果我是正确的,在bash中,readarray使用一些分隔符将输入分隔成字段,分隔符默认为换行符。
与分隔符不同,分隔符包含在前面的字段中。 (如果我将-t指定为readarray,则它将是分隔符而不是分隔符)。为了验证这一点,我有一个文件
$ cat f10
1
2
3为什么在前面的字段中没有包含分隔符(换行符)?谢谢。
$ readarray myarr < f10
$ printf "%s" ${myarr[1]}
2$ printf "%s" ${myarr[2]}
3$ printf "%s" ${myarr[0]}
1$我还有一份文件:
$ cat f1
1 2 3它是否表明当分隔符是2时,分隔符包含在它前面的字段中?为什么1和2之间的空格和2到3之间的空格被移除?
$ readarray -d 2 myarr < f1
$ printf "%s" ${myarr[0]}
12$ printf "%s" ${myarr[1]}
3$发布于 2018-11-18 14:56:33
readarray/mapfile将终止符留在那里--换行符在那里,但是对于默认值IFS,${myarr[0]}中的换行符会在分词过程中丢失。引用变量展开以防止出现这种情况。
$ cat f10
1
2
3
$ readarray myarr < f10
$ printf "%s" "${myarr[0]}"
1
$ printf "%q\n" "${myarr[0]}"
与分隔符不同,分隔符包含在前面的字段中。我不太确定这是否是一个普遍接受的意思?甚至连链接后面的SO 回答都说“事物之间有分隔符”。字典定义将暗示相反的情况:分隔符 1.分隔的分隔符。以逗号分隔的文件以逗号作为分隔符,分隔文件的每个字段.1\n'
$ IFS=
$ printf "%q\n" ${myarr[0]}
J15与分隔符不同,分隔符包含在前面的字段中。J26我不太确定这是否是一个普遍接受的意思?甚至连链接后面的SO C7都说“事物之间有分隔符”。C8将暗示相反的情况:J19分隔符 1.分隔的分隔符。以逗号分隔的文件以逗号作为分隔符,分隔文件的每个字段.J2101\n'J15
与分隔符不同,分隔符包含在前面的字段中。
J26
我不太确定这是否是一个普遍接受的意思?甚至连链接后面的SO C7都说“事物之间有分隔符”。C8将暗示相反的情况:
J19
分隔符 1.分隔的分隔符。以逗号分隔的文件以逗号作为分隔符,分隔文件的每个字段.
J210
https://unix.stackexchange.com/questions/482542
复制相似问题