想做:
del_comments(){ sed 's/\s*#.*//;/^\s*$/d'; }
readarray -t arr < <( del_comments <<'EOF' )
a # comm1
b # comm2
# comm3
c
EOF
printf "[%s]\n" "${arr[@]}"
它抱怨“EOF”的位置很差。如何正确编写以上内容?
想要通过HEREDOC
函数处理del_comments
,结果应该去mapfile
读取数组arr
中的行。
想要输出(从打印数组arr)
[a]
[b]
[c]
编写命令的正确方法是:
readarray -t arr < <( del_comments <<EOF
a # comm1
b # comm2
# comm3
c
EOF
)
确保EOF
自己在线上,没有任何前导或尾随空格。
可能需要将您的功能重写为:
del_comments() { sed 's/[ ]*#.*//; /^$/d'; }
[ ]
应该包含一个空格和一个标签。