1

配列を作成しました。キーワードを探し、見つかった場合は、その後ろにn個の要素がある要素を表示します。それはbashで行うことができますか?もしそうなら、誰かが例を提供できますか?操作例:

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

配列を解析し、「緑色」が表示されている場合は、その後ろにある要素を表示します。この場合、「赤」を返します。

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 に答える