![변수에서 읽으면 빈 새 변수가 제공되는 이유는 무엇입니까? [폐쇄]](https://linux55.com/image/143488/%EB%B3%80%EC%88%98%EC%97%90%EC%84%9C%20%EC%9D%BD%EC%9C%BC%EB%A9%B4%20%EB%B9%88%20%EC%83%88%20%EB%B3%80%EC%88%98%EA%B0%80%20%EC%A0%9C%EA%B3%B5%EB%90%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
저장된 변수 문자열에서 폴더 이름을 가져오려고 합니다. 다음 명령을 실행할 때
path="Folder%20Name/Dir/File"
read -d "/" folder < <(echo ${path/\%20/ })
echo "$folder"
나는 공백을 얻습니다 echo $folder
. 내가 어디서 잘못됐나요? 시도했지만 read -d "/" folder <<< $"(${path/\%20/ })"
성공하지 못했습니다.
답변1
첫 번째 명령은 Bash 4.4에서 잘 실행됩니다.
$ path="Folder%20Name/Dir/File"
$ read -d "/" folder < <(echo ${path/\%20/ })
$ echo "$folder"
Folder Name
여기서 프로세스 대체를 사용할 필요는 없지만 다음 문자열을 사용할 수 있습니다.
$ read -d "/" folder <<< "${path/\%20/ }"
두 번째 명령의 경우 $"..."
여기에는 필요하지 않은 지역화된 인용을 사용하고 있으며 대괄호도 문자열에 추가되므로 (Folder Name
변수에 대해 이 작업을 수행하면 얻을 수 있습니다 path
.
(그런데 Zsh를 사용하기 시작하면 Zsh를 path
변수 이름으로 사용하지 마세요.)