我正在尝试用bash编写一个小程序,其中一部分需要能够从txt文件中获取一些值,其中不同的文件由一行分隔,然后将每行添加到变量或添加每行到一个数组。
到目前为止,我已经尝试过这个:
FILE=$"transfer_config.csv"
while read line
do
MYARRAY[$index]="$line"
index=$(($index+1))
done < $FILE
echo ${MYARRAY[0]}
这只会产生一个空行,而不是配置文件第一行的内容。
我没有收到任何错误,这就是为什么我不太清楚为什么会这样。
使用os.system("$HOME/bin/mcserver_config/server_transfer/down/createRemoteFolder")
通过python脚本调用bash脚本,但是如果我在python程序创建bash脚本读取的文件之后调用它,它就可以工作。
我几乎100%确定这不是目录的问题,因为bash脚本顶部的pwd
显示在正确的目录中,而python程序也在创建数据文件正确的地方。
非常感谢任何帮助。
编辑:
我也试过subprocess.call("path_to_script", shell=True)
看看它是否有所作为,我知道这不太可能,但它没有。
答案 0 :(得分:0)
我怀疑当从python调用bash脚本时,刚刚创建了该文件,你并没有真正完成该文件:你应该显式关闭文件或使用with
构造。
否则,写入的数据仍然在任何缓冲区中(来自文件对象,OS中或任何地方)。只关闭(或至少刷新)文件,确保数据确实在文件中。
BTW,而不是os.system
,您应该使用subprocess
模块......