我有一个如下变量,并且我执行某些操作来一一打印输出,如下所述。
a="My name is A. Her Name is B. His Name is C"
echo "$a" | awk -F '[nN]ame |\\.' '{for (i=2; i<=NF; i+=2) print $i}'
输出是
is A
is B
is C
当我将结果存储到数组中时,它会将空格视为数组分隔符并存储值。但我想将输出的每一行存储到每个数组索引值,如下所示
x=($(awk -F '[nN]ame |\\.' '{for (i=2; i<=NF; i+=2) print $i}' <<< "$a"))
输出 ,
${x[0]} = is
${x[1]} = A
..and so on...
我期望的是
${x[0]} = is A
${x[1]} = is B
${x[2]} = is C
Also echo ${#x[@]} = 6
;它应该是= 3
您还可以使用 mapfile 命令(bash 版本 4 或更高版本):
tempX=$(awk -F '[nN]ame |\\.' '{for (i=2; i<=NF; i+=2) print $i}' <<< "$a")
mapfile -t x <<< "$tempX"
~$ echo "${x[0]}"
is A
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)