比较shell脚本中具有多个值的两个变量

时间:2017-04-04 14:53:01

标签: shell sh

经过很长一段时间后,我正在尝试使用shell脚本。在这里,如果我有两个变量说var& foo如下:

$ echo $var
root daemon bin sys sync games man lp mail news uucp proxy www-data backup list irc gnats nobody systemd-timesync systemd-network systemd-resolve systemd-bus-proxy syslog _apt lxd messagebus uuidd dnsmasq sshd zarvis

$ echo $foo
games backup nobody zarvis

他们有一些共同的价值观,我想比较它们,只找出唯一的价值观。到目前为止,我已经从网上尝试了很多,但无法找到解决方案。请帮忙。

1 个答案:

答案 0 :(得分:1)

如果您想在[{1}}中找到$var的所有项目,则会执行此操作:

$foo

如果您想查找tmp() { var="root daemon bin sys sync games man lp mail news uucp proxy www-data backup list irc gnats nobody systemd-timesync systemd-network systemd-resolve systemd-bus-proxy syslog _apt lxd messagebus uuidd dnsmasq sshd zarvis" foo="games backup nobody zarvis" varray={$var} for v in ${varray[@]} do if ! [[ "$foo" =~ "$v" ]]; then echo "No match -- $v" fi done } 中不在$foo内的项目(另一种方式'回合),只需在上面的代码中切换两项即可。如果您想要两个列表,请一个接一个地运行。

注意:可能有一种方法可以同时进行,但有时,在现实世界中,快速简单的解决方案比聪明且复杂的解决方案更可取。

希望这有帮助!