2017-04-04 12 views
0

かなり長い時間が経過した後、シェルスクリプトで手を加えていました。彼らが共通していくつかの値を持っていると私はそれらを比較し、ユニークな値だけを知りたいシェルスクリプトで複数の値を持つ2つの変数を比較する

$ 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 

:以下のように私は2つの変数がVAR & FOOを言っている場合は、ここでは、行きます。これまで私はウェブからたくさん試しましたが、解決策を見つけることができませんでした。助けてください。

+0

これまでに試したことを追加できますか?また、期待される出力を投稿してください。 –

答えて

1

あなたは$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 
} 

あなたが$varにない$foo内の項目を検索する場合(他の方法では '丸め)、ちょうど上記のコードの2つを切り替えます。両方のリストが必要な場合は、順番に実行します。

注:同時に実行する方法があるかもしれませんが、現実世界では、すばやく簡単な解決策が賢明で複雑なものよりも望ましい場合もあります。

希望すると便利です。

+0

ありがとう、トンブロ!しかし、小さな間違いがありました。 'varray =($ var)'は 'varray = {$ var} 'にする必要があります すべてがうまくいきました。 –

+0

Whups。謝罪いたします。私は答えでそれを修正します。ありがとう! –

関連する問題