1

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

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

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

4

2 回答 2

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 在评论中指出的那样,您需要担心如果未设置数组索引可能会发生什么。

于 2012-08-03T03:38:53.473 回答
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 循环开头的偏移量,避免对负索引进行无用测试。

于 2012-08-03T11:38:16.020 回答