나는 쉘의 문자열 조작 도구를 통해 로그 파일을 생성하기 위해 다음 코드를 사용하고 있습니다. 파일 이름이 있고 오류가 발생하면 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