bash源文件进行一些修改

bash源文件进行一些修改

我想在 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')

相关内容