如何从 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]}
...
...
我正在从我的 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]}
... ...