私は実行しようとしましたが、echo ${@:$#}
現在のシェルで動作します。
echo ${#}
エコーがゼロであることがわかりました。
結果に関する資料が見つかりませんでした。
私が使用したいdockerスクリプトを理解できるように、その部分を理解しようとしています。スクリプトは次のとおりです。
alias enhance='function ne() { docker run --rm -v "$(pwd)/`dirname ${@:$#}`":/ne/input -it alexjc/neural-enhance ${@:1:$#-1} "input/`basename ${@:$#}`"; }; ne'
答え1
$#
関数またはスクリプトのパラメータ数、位置パラメータ数。$@
関数やスクリプトのパラメータリスト、位置パラメータリストなどです$1
。$2
大きな打撃を受けた状態で、ケシそしてジッシュ、等。 :
${@:offset:n}
n
パラメータから始まるパラメータがないか、offset
ifから最後まですべてのパラメータがありませんか?offset
n
したがって、${@:$#}
これは現在の関数に提供されている最後のパラメータ${@:1:$#-1}
ですが、残りのパラメータです。最後の引数も書くことができます${@: -1}
(Bashバージョン4.3以降)。