我正在尝试从存储的变量字符串中获取文件夹名称。当我运行以下命令时
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
变量的名称。)