파일 확장자 이름 바꾸기가 작동하지 않습니다.

파일 확장자 이름 바꾸기가 작동하지 않습니다.

나는 쉘의 문자열 조작 도구를 통해 로그 파일을 생성하기 위해 다음 코드를 사용하고 있습니다. 파일 이름이 있고 오류가 발생하면 err.log가 포함된 로그 파일을 생성해야 합니다.

가정은 다음 $fileName과 같습니다 test.tmp.

echo ' l_error_msg' >> $UPLOAD/output/$fileName.err

그러면 이라는 파일이 생성됩니다 test.tmp.err.

그래서 다음 코드를 사용하여 생성해 보았습니다 test.err.

echo ' l_error_msg' >> $UPLOAD/output/${$fileName%.*}.err

그러나 이것은 작동하지 않습니다.

답변1

변수가 주어지면 foo="bar.baz"올바른 삭제 구문 .baz은 다음과 같습니다 ${foo%.*}.

$ foo="bar.baz"
$ echo ${foo%.*}
bar

중복된 부분을 제거 $하면 예상대로 작동합니다.

$ fileName="test.tmp"
$ echo ${fileName%.*}.err 
test.err

답변2

이 시도

echo ' l_error_msg' >> $UPLOAD/output/`echo $fileName|awk -F. '{print $1}'`.err

관련 정보