我對此無計可施。我正在使用 zsh 並嘗試簡單地分割%3~
字元的擴充/
。這與$(pwd)
and的擴展配合得很好$PWD
- 兩者也是類似路徑的字串。
我正在嘗試使用以下程式碼拆分字串("${(@s./.)a}")
- 其中 a 是a=$(pwd)
或a=%3~
。同樣,此程式碼適用於pwd
,但不適用於%3~
。
我對 shell 腳本還是有點陌生——但據我了解,應該沒有差異。無論我做什麼,我都無法%~
正確擴展 的 split 。我嘗試過的事情:
# Ran from /home/me/code
a=%3~
b=$(pwd)
c=$PWD
d="/test/1/2"
e=$(echo "$a")
f="/$a"
echo $a # ~/code
echo $b # /home/me/code
echo $c # /home/me/code
echo $d # /test/1/2
echo $e # ~/code
echo $f # /~/code
("${(@s./.)a}") # ~/code
("${(@s./.)b}") # home me code
("${(@s./.)c}") # home me code
("${(@s./.)d}") # test 1 2
("${(@s./.)e}") # ~/code
("${(@s./.)f}") # /~/code
我實際上開始認為 zsh 只是故意不一致。不過,我確信我錯過了什麼。我也嘗試過("${(ps./.)a}")
,因為當我讀到它時,我應該做同樣的事情。我還嘗試過基於 IFS 的分割、設定IFS="/"
.同樣,適用於普通字串 - 不適用於%~
.???
編輯:為了完整起見,這是在 .zsh-theme 檔案中。我想也許這很重要?從技術上講,我不是執行它的人(它是由 oh-my-zsh 運行的),所以也許在那個級別發生了一些奇怪的事情。
答案1
您正嘗試在通常評估提示轉義的上下文之外使用提示轉義。所以變數包含字串%3~
,您嘗試拆分字串%3~
,%3~
我假設它稍後被分配給PS1
/ PROMPT
,然後 zsh 擴展它%3~
。
如果您想執行參數擴展並將字串%3~
視為提示轉義,您可以使用參數擴展標誌,%
如下所示${(%)a}