다음과 같은 스크립트에서 bash 기록 수정자를 사용할 수 있다면 어떨까요?
!$:h
파일의 경로를 가져옵니다.
스크립트에서 사용할 수 있는 방법이 있나요? 예를 들어${1:h}
답변1
csh
이러한 기록 수정자는 기능이 파생되는 변수 에도 적용될 수 있습니다 .
하지만 bash
해당 섹션을 복사하지 않도록 선택하세요. zsh
하지만 그것은. 여기에서 다음을 zsh
사용할 수 있습니다 bash
.
$ file=foo/bar/
$ echo $file:h # (or ${file:h})
foo
zsh
(이 예는 실제로 어떤 개선 사항이 csh
반환되는지 보여주기 위해 선택되었습니다 foo/bar
. 또한 다른 많은 유용한 수정자를 지원합니다.)
다른 쉘에서는 항상 다음을 사용할 수 있습니다 dirname
.
$ dir=$(dirname -- "$file")
$ echo "$dir"
foo
(그러나 개행 문자로 끝나는 디렉토리 이름에서는 올바르게 작동하지 않습니다.)
에서는 bash
다른 POSIX 셸과 마찬가지로 를 사용할 수 있지만 또는 또는 와 ${file%/*}
같은 일부 특수한 경우에는 예상치 못한 결과가 발생할 수 있습니다 .foo/bar/
foo
/