如何获取从两个或更一般的“n”开始的位置参数?

如何获取从两个或更一般的“n”开始的位置参数?

($@) 扩展为位置参数,从 1 开始。

如何获取位置参数,从两个或更一般的开始n

我想使用从两个开始的位置参数作为命令的参数,例如,

myCommand $@

答案1

对于从第 5 个开始的位置参数:

  • zsh或者yash

    myCommand "${@[5,-1]}"
    

    (一如既往,请注意,上面的引号很重要,否则每个元素都将受到 split+glob 的约束yash,或者删除 中的空元素zsh)。

  • ksh93bash或者zsh

    myCommand "${@:5}"
    

    (再次强调,引号很重要)

  • Bourne-like shell(包括所有上述 shell)

    (shift 4; myCommand "$@")
    

    (使用子外壳所以转移只发生在那里)。

  • 类似 csh 的 shell:

    (shift 4; myCommand $argv:q)
    

    (子外壳)

  • fish

    myCommand $argv[5..-1]
    
  • rc

    @{shift 4; myCommand $*}
    

    (子外壳)

  • rc/ es

    myCommand $*(`{seq 5 $#*})
    
  • es

    myCommand $*(5 ...)
    

答案2

$ foo=(1 2 3 4)
$ echo "${foo[@]}"
1 2 3 4
$ echo "${foo[@]:0:2}"
1 2
echo "${foo[@]:2}"
3 4

相关内容