比较shell脚本中具有多个值的两个变量
过了相当长的一段时间后,我正在尝试shell脚本。这里,如果我有两个变量,比如var和foo,如下所示:比较shell脚本中具有多个值的两个变量,shell,sh,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 messa
$ 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
他们有一些共同的价值观,我想比较一下,找出唯一的价值观。到目前为止,我在网上做了很多尝试,但没有找到解决办法。请提供帮助。如果您想在
$foo
中查找$var
中所有而不是的项目,此操作将完成:
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
中找到不在$var
中的项目(另一种方式是“循环”),只需在上述代码中切换这两个项目即可。如果需要两个列表,请依次运行
注意:可能有一种方法可以同时做到这两个方面,但有时在现实世界中,快速简单的解决方案比聪明复杂的解决方案更可取
希望这有帮助 你能补充一下你到目前为止试过的吗?此外,请张贴您的预期输出。谢谢一吨兄弟!虽然
varray=($var)
应该是varray={$var}
Rest,但还是有一个小错误,一切都很好。我道歉。我会在回答中解决这个问题。谢谢