我创建了一个数组,我想查找一个关键字然后如果找到,则显示其后面有n个元素的元素。这可能与bash有关吗?如果是这样,有人可以提供一个例子吗? 操作示例:
element 1=red
element 2=blue
element 3=green
解析数组,如果看到“绿色”,则显示其后面的元素2。在这种情况下,它将返回“红色”。
答案 0 :(得分:1)
#!/usr/bin/env bash
val="blue"
array=("red" "green" "blue")
for (( i = 0; i < ${#array[@]}; i++ )); do
if [[ $val == ${array[i]} ]] && (( i - 2 >= 0 )); then
echo "${array[i - 2]}"
fi
done
输出:
red
正如@jordanm在评论中指出的那样,你需要担心如果没有设置数组索引会发生什么。
答案 1 :(得分:0)
#!/bin/sh
val="blue"
offset=2 #offset index when echoing
array=("red" "green" "blue" "purple" "blue")
for i in $(seq $offset $[${#array[*]}-1])
do
if [ "${array[$i]}" == "$val" ]
then
echo "${array[$[$i-$offset]]}"
fi
done
所有简单的艺术品都可以在$[...]
内完成;不要忘记变量名称前面的$
。在bash中处理数组时非常有用。注意for循环开始时的偏移量,避免对负索引进行无用的测试。