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')