Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较shell脚本中具有多个值的两个变量_Shell_Sh - Fatal编程技术网

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

比较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

过了相当长的一段时间后,我正在尝试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

他们有一些共同的价值观,我想比较一下,找出唯一的价值观。到目前为止,我在网上做了很多尝试,但没有找到解决办法。请提供帮助。

如果您想在
$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,但还是有一个小错误,一切都很好。我道歉。我会在回答中解决这个问题。谢谢