我陷入一种特殊的情况,在这种情况下,我从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
[$line
周围用引号引起来,防止其被分割: