중복 가능성:
${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
귀하의 쉘은 이들 중 더 많은 것을 구현할 수도 있고 구현하지 않을 수도 있지만, 만약 그렇다면 이를 사용해도 이식성이 보장되지는 않습니다.