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