변수에서 읽으면 빈 새 변수가 제공되는 이유는 무엇입니까? [폐쇄]

변수에서 읽으면 빈 새 변수가 제공되는 이유는 무엇입니까? [폐쇄]

저장된 변수 문자열에서 폴더 이름을 가져오려고 합니다. 다음 명령을 실행할 때

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변수 이름으로 사용하지 마세요.)

관련 정보