이 구문은 "${i%.avi}.mp4"를 의미합니다.

이 구문은 "${i%.avi}.mp4"를 의미합니다.

중복 가능성:
${0##*/} 및 ${0%/*}는 어떻게 작동하나요?

웹 어딘가에서 이런 유형의 구문을 본 적이 있습니다.

for i in *.avi
do 
    ffmpeg -i "$i" "${i%.avi}.mp4"
done

이 기능은 어떻게 작동 "${i%.avi}.mp4"하며 어떻게 사용하나요?

답변1

이를 매개변수 확장이라고 합니다. 오른쪽의 모든 내용은 .avi제거되고 .mp4결과에 연결됩니다.

"foo.avi"인 경우 $i결과는 "foo.mp4"입니다.배쉬 FAQ 73문자열 조작을 위해 매개변수 확장을 사용할 수 있는 다른 방법에 대한 몇 가지 좋은 예가 있습니다.

답변2

.avi접미사가 있으면 제거한 $i다음 결과를 .mp4.

이를 매개변수 확장이라고 합니다.

표준은 다음과 같이 설명됩니다. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02

귀하의 쉘은 이들 중 더 많은 것을 구현할 수도 있고 구현하지 않을 수도 있지만, 만약 그렇다면 이를 사용해도 이식성이 보장되지는 않습니다.

관련 정보