개별 변수의 매개변수 확장은 예상대로 작동합니다. 하지만 여러 변수가 포함된 매개변수를 어떻게 확장합니까? 예:
#!/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%/*}")