You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash中如何对参数数组$@进行切片?为何${$@:1}会报错?

Bash参数数组$@的切片方法

你遇到的问题是因为对特殊参数$@的切片语法用错了,正确的写法不需要在@前面额外加$。

修正后的脚本

#!/bin/bash

echo "$@"
B=("${@:1}")       # 从索引1开始切片到参数数组末尾
echo "${B[@]}"

运行./play x y z时,会先输出x y z,然后输出y z,完全符合预期。

原理说明

  • 普通数组切片用${数组名[@]:偏移量},比如${A[@]:1},这里的A[@]是数组的引用方式。
  • 而$@本身就是代表所有位置参数的特殊符号,在进行参数展开切片时,直接用@作为参数名即可,写成${@:1}就表示从第1个索引(Bash数组索引从0开始,这里的偏移量1对应第二个参数)开始,截取到最后一个参数。

扩展:指定切片长度

如果需要截取固定长度的参数,比如从索引1开始取2个元素,可以写成:

B=("${@:1:2}")

运行./play x y z w时,B的内容会是y z。

内容的提问来源于stack exchange,提问作者merlin2011

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:58:24