从Linux bash shell脚本中的两个变量创建唯一列表

Sha*_*der 0 unix linux bash shell

我有两个变量,其值可以在两者中.我想从这两个变量中创建一个唯一的列表.

VAR1="SERVER1 SERVER2 SERVER3"
VAR2="SERVER1 SERVER5"
Run Code Online (Sandbox Code Playgroud)

我想得到一个结果:

"SERVER1 SERVER2 SERVER3 SERVER5"
Run Code Online (Sandbox Code Playgroud)

imp*_*p25 6

以下管道通过sort程序使用唯一参数组合两个列表-u:

UNIQUE=$(echo "$VAR1 $VAR2" | tr ' ' '\n' | sort -u)
Run Code Online (Sandbox Code Playgroud)

这给出了输出:

> echo $UNIQUE
SERVER1 SERVER2 SERVER3 SERVER5
Run Code Online (Sandbox Code Playgroud)

编辑:

正如William Purcell在下面的评论中指出的那样,这将字符串用新线分开.如果您希望再次通过空格分隔,则可以通过tr '\n' ' '以下方式对输出进行排序:

> UNIQUE=$(echo "$VAR1 $VAR2" | tr ' ' '\n' | sort -u | tr '\n' ' ')
> echo "$UNIQUE"
SERVER1 SERVER2 SERVER3 SERVER5
Run Code Online (Sandbox Code Playgroud)

  • 但请注意,`$ UNIQUE`有空格的换行符.(试试`echo"$ UNIQUE"`) (2认同)