根据条件显示数组中的元素

时间:2012-08-03 03:28:59

标签: arrays bash

我创建了一个数组,我想查找一个关键字然后如果找到,则显示其后面有n个元素的元素。这可能与bash有关吗?如果是这样,有人可以提供一个例子吗? 操作示例:

element 1=red
element 2=blue
element 3=green

解析数组,如果看到“绿色”,则显示其后面的元素2。在这种情况下,它将返回“红色”。

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循环开始时的偏移量,避免对负索引进行无用的测试。