
내 스크립트에서 다음 코드는 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'
대신에.