在 Bash 中使用数组键列表时开始循环到特定索引
Start loop to a specific indice when use list of array keys in 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
我需要操作数组的键,所以我使用了以下循环:
#!/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