如何通过从bash调用其他程序来获取bash数组中的输出值?

问题描述 投票:-3回答:1

我陷入一种特殊的情况,在这种情况下,我从python中一个接一个地打印两个字符串,并在bash脚本中读取它(这称为python代码段)我期望数组大小为2,但不知何故,bash还将空格也视为元素分隔符,并返回3的大小。

示例脚本

multi_line_return.py文件具有以下内容

print("foo bar")
print(5)

multi_line_call.sh具有以下内容

#!/bin/bash

PYTHON_EXE="ABSOLUTE_PATH TO PYTHON EXECUTABLE IN LINUX"
CURR_DIR=$(cd $(dirname ${BASH_SOURCE[0]}) && pwd)/

array=()
while read line ; do
  array+=($line)
done < <(${PYTHON_EXE} ${CURR_DIR}multi_line_return.py)

echo "array length --> ${#array[@]}"
echo "each variable in new line"
for i in "${array[@]}"
do
    printf $i
    printf "\n"
done

现在将以上两个文件保存在同一目录中,并进行以下调用以查看结果。

bash multi_line_call.sh

如您所见,

I am getting 
  array length = 3  
  1.foo, 2.bar & 3. 5

The expectation is 
One complete line of python output (stdout) as one element of bash array
  array length = 2
  1. foo bar & 2. 5
bash
1个回答
2
投票

[$line周围用引号引起来,防止其被分割:

© www.soinside.com 2019 - 2024. All rights reserved.