반응형

출처 : https://stackoverflow.com/questions/6318809/how-do-i-grab-an-ini-value-within-a-shell-script

shell 스크립트에서 INI 파일 설정값을 얻는 방법은?

다음과 같은 parameters.ini 파일이 있습니다.

[parameters.ini]
    database_user    = user
    database_version = 20110611142248

bash 쉘 스크립트 내에서 parameters.ini 파일에 지정된 데이터베이스 버전을 읽고 사용하여 처리하려고 합니다.

#!/bin/sh
# 스크립트에서 사용하기 위해 parameters.ini 파일에서 데이터베이스 버전을 가져와야 함
PHP app/console doctrine:migrations:migrate $DATEBASE_VERSION

이를 어떻게 할 수 있을까요?


31개의 답변 중 1개

해당 라인의 값을 grep 하고난 뒤 awk를 사용하는 것은 어떨까요?

version=$(awk -F "=" '/database_version/ {print $2}' parameters.ini)
반응형
반응형

출처 : https://stackoverflow.com/questions/22683269/how-to-parse-a-config-file-conf-in-shell-script

shell 스크립트에서 설정 파일 (*.conf) 파싱하는 방법

저는 shell 스크립트 신입입니다. app.conf 파일이 다음처럼 있습니다.

[MySql]
user = root
password = root123
domain = localhost
database = db_name
port = 3306

[Logs]
level = logging.DEBUG

[Server]
port = 8080

저는 shell 스크립트에서 이 파일을 파싱하여 mysql 설정 정보를 추출하고 싶습니다. 어떻게 할 수 있을까요?

4개의 답변 중 1개의 답변만 추려냄

저는 다음처럼 하였습니다.

pw=$(awk '/^password/{print $3}' app.conf)
user=$(awk '/^user/{print $3}' app.conf)

echo $pw
root123

echo $user
root

$()는 변수 pw를 내부 명령의 출력으로 설정합니다. 안쪽의 명령은 app.conf 파일에서 password 로 시작하는 줄(line)에서 세 번째 필드를 출력합니다.

편집됨

설정 파일에서 많은 값을 파싱하려면 설정 파일 이름에 대한 변수를 만듭니다.

CONFIG=app.conf
pw=$(awk '/^password/{print $3}' "${CONFIG}")
user=$(awk '/^user/{print $3}' "${CONFIG}")

2개의 다른 포트가 있다면... 올바른 section이 나왔을 때 flag를 1로 설정하고 당신이 찾는 포트가 나왔을 때 종료(exit) 합니다.

mport=$(awk '/^\[MySQL\]/{f=1} f==1&&/^port/{print $3;exit}' "${CONFIG}")
sport=$(awk '/^\[Server\]/{f=1} f==1&&/^port/{print $3;exit}' "${CONFIG}")

역자 추가내용

저 같은 경우에는 다음처럼 파싱처리 하였습니다.

pw=$(awk -F "=" '/^\[MySQL\]/{f=1} f==1&&/^password/{print $2;exit}' "${CONFIG}")
반응형

+ Recent posts