쉘 스크립트의 모든 매개변수를 한 번에 조작하는 방법은 무엇입니까?

쉘 스크립트의 모든 매개변수를 한 번에 조작하는 방법은 무엇입니까?

제한된 수의 인수에 대해 다음과 같은 작업을 명시적으로 수행할 수 있습니다.

wrapped_function "${1#prefix}" "${2#prefix}" "${3#prefix}"  # etc.,

좀 더 쉽게 조작할 수 있는 방법이 있나요?모두일회성 매개변수?

답변1

물론,

wrapped_function "${@#prefix}"

$@집합을 나타낸다모두매개변수 $1, $2, ...(참조여기) 별도의 따옴표로 묶음, 즉 기본적으로

$@="\"$1\" \"$2\" \"$3\" ..."

그러나 bash는 변수 작업을 개별적으로 적용합니다.매개변수, 즉

${@#prefix}="\"${1#prefix}\" \"${2#prefix}\" ..."

구문은 다음 으로 시작 ${VAR#prefix}하면 제거함을 의미합니다.$VARprefix

TEST="/tmp/var/bin"; echo ${TEST#/tmp}  # yields "/var/bin"

마찬가지로, %치환을 사용하여 접미사를 제거할 수 있습니다 #.

관련 정보