쉘 스크립트에서 날짜 명령에 변수를 전달하는 중 오류가 발생했습니다.

쉘 스크립트에서 날짜 명령에 변수를 전달하는 중 오류가 발생했습니다.

다음 코드를 사용하여 GMT 시간을 AEST 시간으로 변환하려고 하는데 제대로 작동합니다. date --date='TZ="GMT" 2017/07/24 12:00:00' "+%Y-%m-%d %H:%M:%S"

다음과 같이 날짜 변수를 위 쿼리에 매개변수로 전달할 때:

RequestDate="2017/07/24 12:00:00"

date --date='TZ="GMT" ${RequestDate}' "+%Y-%m-%d %H:%M:%S".

오류가 발생합니다.

date: invalid date `TZ="GMT" ${RequestDate}`.

작은 따옴표와 큰 따옴표를 사용하여 여러 줄 바꿈을 시도했습니다.

답변1

작은따옴표로 묶인 문자열에 변수를 배치하면 쉘은 변수를 확장하지 않습니다. 노력하다:

$ TZ=GMT date --date "${RequestDate}" "+%Y-%m-%d %H:%M:%S"

답변2

셸에는 다양한 유형의 참조가 있으며 가능한 솔루션도 다양합니다. 이것다른 답변맞다면 작은따옴표 안의 값은 확장되지 않습니다. 그러나 TZ를 매개변수의 일부로 사용하고 매개변수에 따옴표를 포함하려고 합니다. 작은따옴표로 묶인 부분과 큰따옴표로 구분 기호가 없는 부분을 추가하면 됩니다.

date --date='TZ="GMT" '"${RequestDate}" "+%Y-%m-%d %H:%M:%S"

백슬래시를 사용할 수도 있습니다.

date --date="TZ=\"GMT\" ${RequestDate}" "+%Y-%m-%d %H:%M:%S"

관련 정보