Bash

${@:$#} 到底是什麼?

  • March 8, 2021

我試圖執行echo ${@:$#},它與我目前的 shell 相呼應。

我發現echo ${#}迴聲0。

我沒有找到任何關於結果的資源。

我試圖理解那部分,所以我可以理解我想使用的 docker 腳本。腳本是:

alias enhance='function ne() { docker run --rm -v "$(pwd)/`dirname ${@:$#}`":/ne/input -it alexjc/neural-enhance ${@:1:$#-1} "input/`basename ${@:$#}`"; }; ne'

在每個 POSIX 兼容的 shell中,

  • $#是函式或腳本的參數數量,位置參數的數量。
  • $@是函式或腳本的參數列表,位置參數的列表$1$2等等。

在 BashKshZsh等:

  • ${@:offset:n}n從 parameter 開始的參數,或者從ifoffset到結尾的所有參數都失去了。offset``n

因此${@:$#}是手頭函式的最後一個參數,而${@:1:$#-1}剩下的參數是。最後一個參數也可以寫${@: -1}(在 Bash 版本 4.3 或更高版本中)。

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