在将命令读入bash数组时如何保留空行?
发布时间:2020-12-15 21:10:13 所属栏目:安全 来源:网络整理
导读:我正在使用bash创建一个输出一组值的脚本(每行一个),然后运行它,然后将输出放入一个数组中.我想将空行保留为空数组元素,因为空值仍然是一个值,这是匹配我期待的值列表的唯一方法. 所以对于以下bash代码: IFS=$'n' foo=( $(echo 'foo bar'; echo; echo; ech
我正在使用bash创建一个输出一组值的脚本(每行一个),然后运行它,然后将输出放入一个数组中.我想将空行保留为空数组元素,因为空值仍然是一个值,这是匹配我期待的值列表的唯一方法.
所以对于以下bash代码: > IFS=$'n' > foo=( $(echo 'foo bar'; echo; echo; echo baz) ) > echo ${#foo[@]} 2 我期望看到4个输出,因为有四行输出.相反,只包含带有某些内容的行,因此数组中只有两个值. 以下替代方案没有帮助: > foo=( `echo 'foo bar'; echo; echo; echo baz` ) > echo ${#foo[@]} 2 > foo=( "$(echo 'foo bar'; echo; echo; echo baz)" ) > echo ${#foo[@]} 1 如何才能做到这一点? 解决方法
如果您使用的是bash 4或更高版本,
readarray -t foo < <(echo 'foo bar'; echo; echo; echo baz) 在早期版本中,我建议采用更零碎的方法: foo=() while IFS= read -r; do foo+=( "$REPLY" ) done < <(echo 'foo bar'; echo; echo; echo baz) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |