![쉘 스크립트는 함수에서 반환된 명령을 실행하지 않습니다.](https://linux55.com/image/132543/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94%20%ED%95%A8%EC%88%98%EC%97%90%EC%84%9C%20%EB%B0%98%ED%99%98%EB%90%9C%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%8B%A4%ED%96%89%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
누군가 이것이 작동하지 않는 이유를 설명할 수 있습니까? 기간 타임스탬프에서 초를 반환하는 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