다중 변수에 대한 매개변수 확장

다중 변수에 대한 매개변수 확장

개별 변수의 매개변수 확장은 예상대로 작동합니다. 하지만 여러 변수가 포함된 매개변수를 어떻게 확장합니까? 예:

#!/bin/sh

foo=/lorem/ipsum; bar=dolor/sit

tmp="$foo/$bar"
printf '%s\n' "${tmp%/*}"

임시 변수 없이 이 매개변수 확장을 어떻게 실행할 수 있나요?

답변1

확장은 하나의 변수만 허용하므로 임시 변수가 필요합니다. 그러나 이것이 정확한 사용 사례라면 dirname은 %/*와 거의 똑같은 작업을 수행하므로 적합할 수 있습니다.

$ foo=/lorem/ipsum; bar=dolor/sit
$ dirname $foo/$bar
/lorem/ipsum/dolor

답변2

해결 방법은 다음과 같습니다. 임시 변수는 설정되지 않습니다.현재의껍데기:

foo=/lorem/ipsum; bar=dolor/sit
(tmp="$foo/$bar"; printf '%s\n' "${tmp%/*}")

관련 정보