配列を作成しました。キーワードを探し、見つかった場合は、その後ろにn個の要素がある要素を表示します。それはbashで行うことができますか?もしそうなら、誰かが例を提供できますか?操作例:
element 1=red
element 2=blue
element 3=green
配列を解析し、「緑色」が表示されている場合は、その後ろにある要素を表示します。この場合、「赤」を返します。
#!/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がコメントで指摘しているように、配列インデックスが設定されていない場合に何が起こるかを心配する必要があります。
#!/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ループの先頭のオフセットに注意して、負のインデックスの無駄なテストを避けてください。