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

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

我尝试运行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

在每个 POSIX 兼容 shell 中,

  • $#是函数或脚本的参数数量,位置参数的数量。
  • $@是函数或脚本的参数列表、位置参数列表 、 等$1$2

在重击中,克什兹什, ETC。:

  • ${@:offset:n}n从parameter 开始的参数,还是从ifoffset到末尾的所有参数都缺失。offsetn

因此${@:$#}是给当前函数的最后一个参数,而${@:1:$#-1}是剩余的参数。最后一个参数也可以写成${@: -1}(在 Bash 版本 4.3 或更高版本中)。

相关内容