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

标签 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”。问题是我还需要用“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/

相关文章:

bash - Bash 中的“哪个”与 'command -v'

c - 对 PTHREADS 过于偏执?

Python 2.7 将变量传递到子进程命令行

c++ - 如果 STDOUT 缓冲区溢出会发生什么

linux shell 脚本 sed

linux - 使用 'basename -s' 从 bash 中的路径中提取文件名

linux - 仅删除文件和提示目录

function - 连接路径和文件

linux - 如何更新终端上特定行的文本?

c++ - gcc (Linux/MinGW) 是否存在编译器标志以在运行时引发被零除的错误?