구성 파일을 참조하는 스크립트에서 구성 파일을 업데이트하시겠습니까?

구성 파일을 참조하는 스크립트에서 구성 파일을 업데이트하시겠습니까?

특정 스크립트에 구성 파일을 추가하는 데에는 문제가 없지만 자동으로 업데이트하는 것은 또 다른 문제입니다. 이 경우 스크립트에 몇 가지 변수를 제공하고 있으며 스크립트가 구성 파일에서 제공하는 값을 변경할 수 있기를 원합니다. 실행 중인 스크립트에서 변수 값을 변경한 다음 그에 따라 구성 파일을 업데이트하는 표준 방법이 있습니까? 나의 현재 접근 방식은 변수가 포함된 줄을 sed하고 그 내용을 변경하는 것이지만 더 나은 방법이 있어야 한다고 생각합니다.

예를 들어, 임의의 텍스트 파일을 생성하는 프로그램을 상상해 보세요.
프로그램에 사용 가능한 변수를 정의하는 구성 파일의 행:

EXIT_ON_GEN="true" //exit on successful generation of text file if true

사용자는 임의의 텍스트 생성을 너무 좋아하기 때문에 프로그램에 머물기를 원함을 나타내는 메뉴 옵션을 선택합니다. 프로그램의 현재 인스턴스에 대해 간단히 false로 설정하는 것은 쉽지만, 사용자가 실행할 때마다 돌아가서 설정을 변경할 필요가 없도록 구성 파일 자체를 변경하는 가장 좋은 방법은 무엇입니까?

답변1

사용sed

이 파일로 시작하세요:

$ cat >file
EXIT_ON_GEN="true" //exit on successful generation of text file if true

true를 false로 변경하고 터미널에 새 버전을 표시하는 한 가지 방법은 sed를 사용하는 것입니다.

$ sed 's/^EXIT_ON_GEN=[^[:space:]]*/EXIT_ON_GEN="false"/' file
EXIT_ON_GEN="false" //exit on successful generation of text file if true

파일을 현재 위치에서 변경하려면 다음 -i옵션을 사용하십시오.

$ sed -i 's/^EXIT_ON_GEN=[^[:space:]]*/EXIT_ON_GEN="false"/' file

사용awk

$ awk -F'"' -v OFS='"' '/^EXIT_ON_GEN/{$2="false"} 1' file
EXIT_ON_GEN="false" //exit on successful generation of text file if true

관련 정보