2016-04-29 14 views
0

Neu zu Bash-Skript, ich muss überprüfen, ob das erste Wort in der Gruppe das zweite Wort in Benutzer entspricht.Bash-Skript if -eq

Group=`echo $rules | egrep -v 'Test'` 
Users=`echo $rules | grep -i 'Test' | awk '{print substr($0, index($0,$2))}'` 

if [ '$Group' -eq '$Users' ]; 
then 
echo $Group 
echo $Users 

else 
: 
fi 

Kann ich so etwas verwenden oder wie ist das möglich?

if [ '$Group $1' -eq '$Users $2' ]; 

oder

if [ '^$Group' -eq '^$Users' ]; 
+1

können Sie einige Beispieleingabe zur Verfügung stellen, mit zu spielen? Außerdem denke ich, dass Sie doppelte Anführungszeichen brauchen, um die Werte zu erweitern -> 'if [" $ Group "-eq" $ Users "]'. – fedorqui

Antwort

2

Operator -eq wird für ganzzahlige Vergleich verwendet. Wenn Sie Strings vergleichen wollen Sie = wie diese verwenden müssen:

if [ "$a" = "$b" ] 

die

if [ "$a" == "$b" ] 

aber nicht gleichwertig (beachten Sie die Leerzeichen)

if [ "$a"="$b" ] 

jedoch zu

äquivalent ist, Wenn Sie einen regulären Ausdruck verwenden möchten (Sie haben^verwendet, bei dem es sich nicht um einen Platzhalter für Glob-Muster handelt), sehen Sie in einer if -Anweisung here

Das besagt, dass Sie die Aufspaltung vor der if-Anweisung tun und Benutzer und Gruppen in zwei Arrays setzen sollten.