Bash

理解“詞擴展”?

  • March 18, 2021

我在這裡遇到了“單詞擴展”一詞:

保留所有其他單詞擴展($non_exported_shell_variable, $1, $#, ${HOME+x}, $((1 + 1)),$(cmd)...)不變

我會說我知道什麼是擴展變數,${HOME}但什麼是“單詞擴展”?

也許它是“分詞”的替代術語(它本身就是“欄位拆分”的替代術語)。

更新

由於連結答案的壽命和認知偏差,而第一次閱讀它(主要或僅僅是因為缺乏關於其中提到的許多概念的知識),我沒有內化其中的註釋,內容如下:

在此上下文中的詞擴展是指參數擴展算術擴展命令替換。這不包括文件名生成(又名萬用字元路徑名擴展)、波浪號擴展大括號擴展(本身不是標準sh功能)。在此處使用 here-document 可確保s 保持不變'"但請注意仍然存在反斜杠處理。

“單詞擴展”(注意複數)在POSIX中有詳細定義;他們是

  • 波形擴展 ( ~)
  • 參數擴展 ( ${})
  • 命令替換 ( $())
  • 算術展開 ( $(()))
  • 路徑名擴展

“詞擴展”是上述所有內容的應用,結合其他幾個 shell 解析功能,按特定順序:

  1. 波浪號擴展、參數擴展、命令替換、算術擴展
  2. 場分裂
  3. 路徑名擴展
  4. 報價刪除

請參閱上面連結的 POSIX 規範,它詳盡地詳細說明了所有這些。

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