我想在 bash 脚本中获取一个文件。我知道我们可以做 -
. /path/to/file/file.cfg
OR
source /path/to/file/file.cfg
但我正在 Python 脚本世界中编写一个 bash 脚本,并且需要使用为 Python 脚本创建的配置文件 -
Python 配置文件 -
[section 1]
param1=val1
param2=val2
[section 2]
param1=val11
param2=val22
bash 脚本 -
source /path/to/python_config_file
echo $param1
我得到的错误 -
/path/to/python_config_file: 第 1 行: $'[第 1 节]\r': 找不到命令
我尝试删除 [ ] 行 -
source `sed -e 's/\[[^][]*\]//g' /path/to/python_config_file`
echo $param1
它将所有变量转储为输出 -
源 $'\r' $'param1=val1\r' $'param2=val2\r' $'param1=val11\r' $'param2=val22\r'
: 没有那个文件或目录 + echo
我该如何解决这个问题?我知道我可以为 bash 创建一个配置文件,但问题是客户端不需要多个配置文件,因为这将成为维护噩梦,而且 python + bash 配置必须同步。
答案1
首先,您需要从文件中删除 Windows 风格的结尾。如果您不需要在 Windows 上使用该文件,则只需运行dos2unix /path/to/file/file.cfg
.然后,如果您正在使用bash
,则可以使用流程替代:
. <(grep = /path/to/file/file.cfg)
这将只允许您包含包含 asource
的那些行,这应该正是您所需要的。file.cfg
=
如果您不能/不想修改文件以删除 s \r
,则可以在读取文件时执行此操作:
. <(grep = /path/to/file/file.cfg | tr -d '\r')