Bash 스크립트 - 이스케이프된 달러 기호($)를 해당 변수로 확장합니다.

Bash 스크립트 - 이스케이프된 달러 기호($)를 해당 변수로 확장합니다.

내 질문

이 스크립트가 있습니다 run.sh.

#!/bin/bash

TODAY=$(date)
FILE="my_file.txt.\${TODAY}"

에코하면 FILE다음과 같은 결과가 나타납니다.

echo ${FILE}

Output: `my_file.txt.${TODAY}`

하지만 나는 이것을 원한다:

echo ${FILE}

Output: `my_file.txt.15032023

내 해결 방법은 있지만 더 나은 것이 있어야 합니다.

eval echo ${FILE}

Output: `my_file.txt.15032023`

답변1

이것이 당신이 추구하는 것입니까?

#!/bin/bash

TODAY=$(date +"%d%m%y")
FILE="my_file.txt.${TODAY}"

echo "${FILE}"

그러면 다음이 ./run.sh생성됩니다.

user@wang$ ./test.sh 
my_file.txt.150323

답변2

음, 언제든지 다음을 사용하여 수동으로 교체를 수행할 수 있습니다 ${var/pattern/replacement}.

$ FILE='my_file.txt.${TODAY}'
$ TODAY=123456
$ FILE="${FILE/'${TODAY}'/$TODAY}"
$ echo "$FILE"
my_file.txt.123456

또는 기본 출력 형식이 다르다고 "${FILE/'${TODAY}'/$(date +"%d%m%Y"}"생각하므로 표시되는 형식으로 날짜를 얻으십시오 .date

의견이 있는 참고 사항: YYYY-MM-DD또는 와 같은 날짜를 사용하면 YYYYMMDD날짜를 올바른 순서로 더 쉽게 정렬할 수 있습니다.

관련 정보