일부 수정된 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')

관련 정보