날짜 계산 코드에 날짜 변수를 입력하는 올바른 구문

날짜 계산 코드에 날짜 변수를 입력하는 올바른 구문

내 스크립트에서 다음 코드는 2016-04-28T15:47:48 형식으로 $n의 타임스탬프 변수를 성공적으로 생성합니다.

for n in $(perl parsetime.pl | sed "s/.....$//")

do
echo $n

결과 :

2016-04-28T15:47:48

그러나 이제 이 변수를 사용하여 15분 전의 시간을 계산하고 싶습니다. 다른 사람들은 올바른 형식(작동)으로 타임스탬프를 생성하는 구문을 제공했습니다. 이는 다음을 통해 달성됩니다.

/opt/bin/date --date '-15 minutes 2016-04-28T15:39:27' "+%Y-%m-%dT%H:%I:%S"

결과 :

2016-04-28T09:09:27

그러나 이제 내 문제는 실제 타임스탬프를 작성하는 대신 $n 변수를 사용하려고 하면 오류 메시지가 표시된다는 것입니다.

for n in $(perl parsetime.pl | sed "s/.....$//")

do

/opt/bin/date --date '-15 minutes "$n"' "+%Y-%m-%dT%H:%I:%S" 

결과:

/opt/bin/date: invalid date `-15 minutes "$n"

내가 뭘 잘못했나요? $n 변수를 코드에 올바르게 통합하려면 어떻게 해야 합니까?

답변1

그것이 문제이다:

'-15 minutes "$n"'

작은따옴표는 변수 대체를 중지하므로 실제로 "$n"변수 내용 대신 전달됩니다.

쓰다:

/opt/bin/date --date "-15 minutes $n" '+%Y-%m-%dT%H:%I:%S'

대신에.

관련 정보