${@:$#} とは何ですか?

${@:$#} とは何ですか?

私は実行しようとしましたが、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

すべてのPOSIX互換シェルで

  • $#関数またはスクリプトのパラメータ数、位置パラメータ数。
  • $@関数やスクリプトのパラメータリスト、位置パラメータリストなどです$1$2

大きな打撃を受けた状態でケシそしてジッシュ、等。 :

  • ${@:offset:n}nパラメータから始まるパラメータがないか、offsetifから最後まですべてのパラメータがありませんか?offsetn

したがって、${@:$#}これは現在の関数に提供されている最後のパラメータ${@:1:$#-1}ですが、残りのパラメータです。最後の引数も書くことができます${@: -1}(Bashバージョン4.3以降)。

関連情報