Bash

為什麼從變數中讀取會給出空白的新變數?

  • December 12, 2018

我正在嘗試從儲存的變數字元串中獲取文件夾名稱。當我執行以下

path="Folder%20Name/Dir/File"
read -d "/" folder < <(echo ${path/\%20/ })
echo "$folder"

我得到一個空白echo $folder。我哪裡錯了,我試過read -d "/" folder <<< $"(${path/\%20/ })"沒有成功

您的第一個命令在 Bash 4.4 上執行良好:

$ path="Folder%20Name/Dir/File"
$ read -d "/" folder < <(echo ${path/\%20/ })
$ echo "$folder"
Folder Name

雖然在這裡使用程序替換是不必要的,但您可以只使用 here-string 代替:

$ read -d "/" folder <<< "${path/\%20/ }"

至於您的第二個命令,您正在使用本地化 quoting $"...",我認為您在這裡不需要,並且括號也被添加到字元串中,因此(Folder Name如果您使用path變數執行此操作,您會得到。

(順便說一句,如果您開始使用 Zsh,請不要將path其用作變數的名稱。)

引用自:https://unix.stackexchange.com/questions/487524