Bash
為什麼從變數中讀取會給出空白的新變數?
我正在嘗試從儲存的變數字元串中獲取文件夾名稱。當我執行以下
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
其用作變數的名稱。)