Bash
${@:$#} 到底是什麼?
我試圖執行
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'
$#
是函式或腳本的參數數量,位置參數的數量。$@
是函式或腳本的參數列表,位置參數的列表$1
,$2
等等。
${@:offset:n}
是n
從 parameter 開始的參數,或者從ifoffset
到結尾的所有參數都失去了。offset``n
因此
${@:$#}
是手頭函式的最後一個參數,而${@:1:$#-1}
剩下的參數是。最後一個參數也可以寫${@: -1}
(在 Bash 版本 4.3 或更高版本中)。