Linux

[Linux] envsubst 명령어 사용 방법 (환경 변수 치환)

IT-PAPA 2024. 4. 25. 06:48
728x90
반응형

envsubst 명령어는 환경 변수의 값을 텍스트 파일 내의 변수로 치환하는 데 사용됩니다. 이 명령어는 주로 설정 파일이나 스크립트에서 환경 변수의 값을 동적으로 적용할 때 유용합니다. 사용 방법은 다음과 같습니다:

1. 환경 변수 내보내기: envsubst는 내보낸(exported) 환경 변수만 인식합니다. 따라서 먼저 사용할 환경 변수를 내보내야 합니다:

export VARIABLE_NAME="value"

 

2. 치환할 파일 준비: 치환을 원하는 파일을 준비합니다. 이 파일 내에서 $VARIABLE_NAME 또는 ${VARIABLE_NAME} 형식으로 환경 변수를 참조합니다.

3. envsubst 실행: 다음 명령어를 사용하여 파일 내의 변수를 환경 변수의 값으로 치환합니다:

envsubst < input_file > output_file

여기서 input_file은 원본 파일이고, output_file은 치환된 결과를 저장할 파일입니다.

4. 특정 변수만 치환: 특정 환경 변수만 치환하고 싶다면, envsubst에 변수 이름을 명시할 수 있습니다:

envsubst '$VARIABLE_NAME' < input_file > output_file

이 경우, $VARIABLE_NAME 환경 변수만 치환되고, 다른 환경 변수는 그대로 유지됩니다.

5. 변수 설정 해제: 치환 작업 후에는 필요에 따라 환경 변수를 설정 해제할 수 있습니다:

unset VARIABLE_NAME

envsubst 명령어는 간단하지만 매우 강력하여, 환경 변수를 사용하여 동적으로 파일 내용을 관리할 수 있게 해줍니다.

 

스크립트 예제

지정된 폴더의 yaml 파일을 읽어들여서, -route 라는 파일명을 붙이도록 만들고, 그 안에 변수들도 치환될 수 있도록 수행

#!/bin/bash

# 환경 변수 설정 (필요한 경우 수정)
FOLDER_PATH="/path/to/your/folder"  # 폴더 경로
SUFFIX="-route"  # 파일명에 추가할 텍스트

# 파일 처리
for file in "$FOLDER_PATH"/test*.yaml; do
    # 파일명에서 확장자 제거
    base_name=$(basename "$file" .yaml)
    # 새 파일명 생성
    new_file="$FOLDER_PATH/$base_name$SUFFIX.yaml"
    # 파일 복사 및 수정
    cp "$file" "$new_file"
    # 환경 변수 치환
    envsubst < "$new_file" > "${new_file}.tmp" && mv "${new_file}.tmp" "$new_file"
    echo "Added $SUFFIX to $base_name.yaml and created $new_file"
done
728x90
반응형
LIST