arrays - 在 Bash 中使用数组键列表时开始循环到特定索引
问题描述
我需要操作数组的键,所以我使用以下循环:
#!/bin/bash
array=(aaa bbb ccc ddd)
for i in "${!array[@]}"; do
content="${array[i]}"
echo "$i - $content"
done
结果:
0 - aaa
1 - bbb
2 - ccc
3 - ddd
但是,如果我需要在特定索引处开始循环怎么办?
如果我没有遍历索引,语法将是:
for i in "${!array[@]:2}"; do
content="${array[i]}"
echo "$i - $content"
done
预期的结果应该是:
2 - ccc
3 - ddd
但相反,我有这个错误:
line 4: aaa bbb ccc ddd: bad substitution
有没有办法获得预期的结果?
编辑:我曾经这样做:
for i in "${!array[@]}"; do
[[ $i -lt 2 ]] && continue
content="${array[i]}"
echo "$i - $content"
done
问题是如果密钥不是 2 而是 256423,则启动循环需要一段时间。
解决方案
您可以在定义的位置开始索引:
for ((i=2; i<${#array[@]}; i++)); do echo "$i - ${array[i]}"; done
2 - ccc
3 - ddd
推荐阅读
- opencv - 在 Raspberry Pi 上安装 OpenCV 时未定义的引用
- python - python: 上传到云存储给出 InternalServerError: 500 Backend Error
- python - 如何执行client.py和server.py开启蓝牙连接
- javascript - 如何构建一个 chrome 扩展来显示当前谷歌搜索的列表
- django - 如何通过注释对相关字段日期进行排序?
- python - 如何在命令行中接受多个参数并正确处理它?
- reactjs - 反应设置路线
- java - android AutoCompleteText View 下拉隐藏在键盘后面
- angular - Angular 2 错误:加载块多次失败
- altbeacon - 如何在 Altbeacon 库中重新启动扫描?