누군가 이것이 작동하지 않는 이유를 설명할 수 있습니까? 기간 타임스탬프에서 초를 반환하는 bash 함수가 있습니다.
쉘 스크립트 기능
seconds() {
result=$(echo "\"1970-01-01 $1+0\"")
echo date +%s -d $result
}
통화 기능
seconds 00:00:02.00 #works
date +%s -d "1970-01-01 00:00:02.00+0"
이 정확한 텍스트를 복사하여 작동하는 터미널에서 실행하면 다음과 같은 출력이 생성됩니다.
$(seconds 00:00:02.00) #error
그러나 이는 오류를 반환합니다.
date: extra operand ‘00:00:02.00+0"’
여기서 문제가 무엇입니까? 아니면 더 좋은 방법이 있나요?
답변1
너사용할 필요가 없습니다echo
여기 어느 시점에서나.
서브쉘을 사용하면 함수의 출력을 실행합니다 seconds
.일반적으로 현명하지 못한지금 보고 있는 것과 같은 예상치 못한 동작이 발생할 수 있기 때문입니다.
대신 date
명령 자체를 실행하도록 함수를 단순화하세요.
#!/bin/bash
seconds () {
date -d "1970-01-01 $1+0" "+%s"
}
seconds 00:00:02.00
산출:2