如何在 shell 脚本中的 2 个变量中查找公共值

How to find common values in 2 variables in a shell script

variable1="ABC
XYZ
DEF"

变量的值由“\n”分隔

variable2="MNO
ABC
PQR"

如何从两者中找到公共值 "ABC" 并将其存储在新变量中?

如果可以将这些变量输出到文件,则可以使用 comm.

echo "ABC\nXYZ\nDEF" | sort > va1
echo "MNO\nABC\nPQR" | sort > va2
comm -12 va1 va2

编辑:

@ZoltánNagy 提供了一行版本:

comm -12 <(echo -e "b\na\nc"|sort) <(echo -e "a\nb"|sort)

你可以简单地

echo "$variable1" | grep -Fx "$variable2"

这可移植到 POSIX shell。

在一般情况下,假设您不关心 POSIX 兼容性(在这种情况下,不应将此问题标记为 )。