为什么从变量读取会给出空白的新变量?

为什么从变量读取会给出空白的新变量?

我正在尝试从存储的变量字符串中获取文件夹名称。当我运行以下命令时

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,请不要用作path变量的名称。)

相关内容