如何从 bash 中的标准输出读取数组

How to read array from stdout in bash

我正在从我的 bash 脚本中执行 python 脚本。 python 脚本将 4 行输出到标准输出。我想将这 4 行的输出存储在 bash 中的 4 个不同变量或一个包含 4 个元素的数组中。

当我 运行 我的 python 脚本本身时,我在标准输出上看到了 4 行:

$ python my_script.py
line1
line2
line3
line4

在我的 bash 脚本中,我这样做了:

OUTPUT="$(python my_script.py)"

echo "${OUTPUT}"

readarray -t y <<<"$OUTPUT" 

在我执行上述操作后 echo $y 我只看到第一行的输出 (line1)。

如何将 python 脚本的输出用作 4 个变量或数组?

$y 是数组的第一个元素。 ${y[@]}全部给你

echo "${y[@]}"

你有 bash 作为主要解析器还是有 bash shabang。这是因为 sh 没有这个很好的数组处理...

但是,如果您有 运行 python 脚本时,为什么不通过数组创建括号创建 bash 数组?然后用Johns的方式打印出来。

OUTPUT=( $(python my_script.py) )
echo "len of OUTPUT=${#OUTPUT[@]} and the data is:" ${OUTPUT[@]}
echo "Second entry is=" ${OUTPUT[1]}

... ...