2016-03-19 4 views
0

Ich habe eine while read line Schleife, wo ich $user und $quota bin Zuordnung twhich von stdout kommen, aber ich habe auch eine Datei von einem anderen Server, wo ich überprüft werde, wenn $user ist in dieser Datei vorhanden, die auch die $user Kontingent enthält.vergleichen 2 Werte innerhalb eines während Leseschleife, eine von stdout und einem aus der Datei

Ich brauche den $quota Wert zu vergleichen, die ich in stdout mit dem Wert in der Datei immer bin.

Beispiel:

zmsoap -z GetQuotaUsageRequest -v -u https://$sourceserver:7071/service/admin/soap/ |awk {'print $4" "$5'} | cut -d'"' -f2,4 | sed -r 's/["]+/ /g' | while read line 

do { 

     user1=`echo $line|cut -f1 -d " "` 
     quota1=`echo $line|cut -f2 -d " "` 

     echo "$user1 has $quota1 on $sourceserver" 
     if grep -q "$user1" "$allremotequotasnew"; then 

     echo "OK: $user1 is EXISTING on $destserver" 

     else 

     echo "ERROR: $user1 NOT FOUND on $destserver" && echo "Creating $user1 on $destserver now..." 
     fi 

     } 
done 

irgendwelche Ideen? thanksa viel im Voraus

+1

Was ist die Ausgabe Ihres Skripts? Sie müssen mehr Details zu Ihrer Frage angeben. – gzh

+0

'user1 hat 5093390213 Byte auf server1.com OK: user1 existiert auf server1.com' und so weiter. Es wird gecheckt, ob der '$ user' in der Datei existiert. Aber ich muss auch das Kontingent dieses Benutzers innerhalb der gegebenen Datei zur gleichen Zeit überprüfen, die ich überprüfe, wenn der Benutzer in der Datei ist – esha

+0

Wenn Sie $ Benutzer und $ Kontingent zur gleichen Zeit wollen. Nach 'grep -p', um zu beurteilen, ob der Benutzer vorhanden ist, führen Sie grep ohne die Option '-p' aus, um die Zeile mit dem Benutzer abzurufen und die Zeile zu analysieren, um $ user und $ quota abzurufen. – gzh

Antwort

1

Die Datei wie folgt aussieht: user33 Quote und ich muss prüfen, ob $ Benutzer in der Datei existiert, und wenn ja, dann ausgeschnitten auch ist es Quote

Sie lösen diese Frage durch die folgenden Skript-Clips.

grep "$user1" "$allremotequotasnew" > /dev/null 
if [ $? -eq 0 ];then 
    echo "OK: $user1 is EXISTING on $destserver" 
    dest_line=`grep "$user1" "$allremotequotasnew"` 
    dest_user=`echo $dest_line|cut -f1 -d " "` 
    dest_quota=`echo $dest_line|cut -f2 -d " "` 
else 
    echo "ERROR: $user1 NOT FOUND on $destserver" 
fi 

dest_user und dest_quota sind, was Sie von der Datei erhalten möchten.

+0

vielen dank gzh! das war was ich brauchte. Aber du hast 2 kleine Tippfehler gemacht, du hast gepostet 'dest_line = grep grep $ $ user1" "$ allremotequotasnew" '-> zweimal das grep und das' do' wird in diesem Beispiel nicht benötigt. Aber nochmal vielen Dank, du hast mir den Tag gerettet! – esha

+0

@esha, Thx, ich habe meinen Beitrag geändert. – gzh

Verwandte Themen