当从 python 脚本调用时,为什么我的 bash 脚本不从文件中读取行?

Why doesn't my bash script read lines from a file when called from a python script?

我正在尝试在 bash 中编写一个小程序,它的一部分需要能够从 txt 文件中获取一些值,其中不同的文件由一行分隔,然后添加每个行到变量或将每一行添加到一个数组。

到目前为止我试过这个:

FILE=$"transfer_config.csv"
while read line
do
    MYARRAY[$index]="$line"
    index=$(($index+1))
done < $FILE
echo ${MYARRAY[0]}

这只是产生一个空行,而不是配置文件第一行的内容。

我没有返回任何错误,这就是为什么我不太确定为什么会这样。

bash 脚本是通过使用 os.system("$HOME/bin/mcserver_config/server_transfer/down/createRemoteFolder") 的 python 脚本调用的,但是如果我只是在 python 程序生成文件后调用它 python =37=] 脚本读取,有效。

我几乎 100% 确定这不是目录的问题,因为 bash 脚本顶部的 pwd 显示它在正确的目录中,并且 python 程序还在正确的位置创建数据文件。

非常感谢任何帮助。

编辑:

我也尝试了 subprocess.call("path_to_script", shell=True) 看看它是否会有所不同,我知道这不太可能但没有。

我怀疑当从 ​​python 调用 bash 脚本时,刚刚创建了文件,您并没有真正完成该文件:您应该显式关闭文件或使用 with构造.

否则,写入的数据仍在任何缓冲区中(来自文件对象,或在 OS,或任何地方)。只有关闭(或至少刷新)文件才能确保数据确实在文件中。

顺便说一句,您应该使用 subprocess 模块而不是 os.system...