gpt4 book ai didi

bash - 如何在将命令读入 bash 数组时保留空行?

转载 作者:行者123 更新时间:2023-11-29 09:12:02 28 4
gpt4 key购买 nike

我正在使用 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)

关于bash - 如何在将命令读入 bash 数组时保留空行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22508818/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com