两个变量比较,一到四个可能的输出

时间:2015-10-27 19:20:17

标签: linux bash variables if-statement

我有两个变量:

a=`echo 262832 6469180`
b=`echo 262832 263159 6469180 6469390`

因此:

echo $a
262832 6469180

echo $b
262832 263159 6469180 6469390

" B"表示四个UTM坐标,它们从西向东排列,从南向北排列(即W E S N)。变量" b"包含" a"只有两个位置。因此,在" b"之间进行比较之后和" a"我需要打印" 1"和" 3"。问题是我还需要更换" 1"和" 3"由" W"和" S"。

我按如下方式进行比较:

if [[ $b == *"$a"* ]]
then
   echo "a is in b"
else
   echo "not there"
fi

但是没有正确的想法进行输出替换(根据我的理解,它应该是列。)

欢迎提出任何指示,

1 个答案:

答案 0 :(得分:2)

您可以使用bash arrays轻松完成:

wesn=( W E S N )
a=( 262832 6469180 )
b=( 262832 263159 6469180 6469390 )
for ((i=0; i < ${#b[@]}; i++)); do
    for ((j=0; j < ${#a[@]}; j++)); do
        [ "${b[i]}" == "${a[j]}" ] && echo "${wesn[i]}"
    done
done

它只是按成员比较成员并返回wesn中映射的字母。