Shell-Script

$^@(美元插入符號)在 shell 腳本中是什麼意思?

  • November 18, 2021

我找到了參數擴展的參考資料,但沒有一個解釋什麼$^@。從上下文來看,我認為它用於將 eg 擴展~/$^@~/$1 ~/$2 ...,但我不確定,也找不到任何確認。除了解釋之外,如果可能的話,我希望知道這個擴展被稱為什麼,以及一個指向它的文件的連結。謝謝!

編輯:我被告知這可能是 zsh 特有的。如果有人有更多資訊,請告訴我。

zshshell 中,foo${^array}bar數組array,如(a b c),將擴展為fooabar,foobbarfoocbar(就像大括號擴展會擴展)而不是字元串fooa,bcbar

$ array=(a b c)
$ print -rC1 foo${^array}bar
fooabar
foobbar
foocbar
$ print -rC1 foo${array}bar
fooa
b
cbar

在您引用的程式碼中,這用於將~/(使用者主目錄的路徑名)附加到位置參數列表的每個元素:

$ set -- a b c "bumble bee"
$ print -rC1 ~/$^@
/home/myself/a
/home/myself/b
/home/myself/c
/home/myself/bumble bee

~/$^@是一樣的~/${^@}$@or${@}是位置參數的列表(通常是給目前腳本或 shell 函式的參數,或者使用set內置實用程序設置的字元串,如上所示)。

zshall手冊中搜尋RC_EXPAND_PARAM. 擴展可能最初來自外殼rc

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