いくつかの修正された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

バッシュスクリプト -

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'

:対応するファイルやディレクトリなし+エコー

この問題をどのように解決できますか? Bash用の設定ファイルを作成できることを知っていますが、問題はメンテナンスが悪夢であるため、クライアントに複数の設定ファイルが必要なく、Python + Bash設定を同期させる必要があることです。

答え1

まず、ファイルからWindowsスタイルのエンディングを削除する必要があります。 Windowsでファイルを使用する必要がない場合は、実行してくださいdos2unix /path/to/file/file.cfg。その後、を使用している場合は、次のものを使用bashできます。プロセスの交換:

. <(grep = /path/to/file/file.cfg)

sourceこれにより、正確に必要なaを含む行のみを含めることができます。file.cfg=

sを削除するためにファイルを変更できない場合、または変更したくない場合は、ファイルの\r読み取り中にこれを実行できます。

. <(grep = /path/to/file/file.cfg | tr -d '\r')

関連情報