我有两个变量:
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”。问题是我还需要用“W”和“S”替换“1”和“3”。
我是这样比较的:
if [[ $b == *"$a"* ]]
then
echo "a is in b"
else
echo "not there"
fi
但是没有正确的想法来进行输出替换(据我所知应该按列进行)。
欢迎大家指点
最佳答案
您可以使用 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
中的字母。
关于linux - 两个变量比较,一到四种可能的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33376752/