2016-05-30 23 views
3

Ich habe ein Skript mit zwei mehrzeiligen Strings. Ich würde gerne wissen, ob sie gleich sind. Ich habe keinen Weg gefunden, dies zu tun, denn während das Vergleichen einfach ist, ist es nicht möglich, den Wert der Variablen an den Vergleich thingamajig zu übergeben. Ich hatte keinen Erfolg damit, es mit diff zu verschicken, aber es könnte meine Unfähigkeit sein (viele der Dinge, die ich probiert habe, führten zu 'Dateinamen zu lange' Fehlern). Ein Workaround wäre es, Zeilenumbrüche durch einige seltene Zeichen zu ersetzen, aber es trifft auf das gleiche Problem. Irgendwelche Ideen?Vergleichen Sie mehrzeilige Strings in bash Variablen

+2

versuchen, dieses: 'diff <(echo "$ string1") <(echo "$ string2")' – ritesht93

+0

Hallo! Das gibt mir 'Syntaxfehler in der Nähe von unerwarteten Token '(': diff <(echo" $ S1 ") <(echo" $ S2 ")". Hinweis: Dies ist OS X, aber ich bin mir nicht sicher, dass das das Problem ist. – entonio

+0

Ich sollte darauf hinweisen, dass meine Bash (3.2.57) anscheinend nicht die '<(...)' Syntax unterstützt, egal was drin ist. Ich weiß, dass ich dies mit 'bash' markiert habe, aber wenn möglich, ' d wie eine generische Antwort (obwohl jede Antwort hilfreich wäre!), – entonio

Antwort

1

Dies kann hilfreich sein:

var=$(echo -e "this\nis \na\nstring" | md5sum) 
var2=$(echo -e "this\nis not\na\nstring" | md5sum) 
if [[ $var == $var2 ]] ; then echo true; else echo false; fi 
+1

1. Sie besser $ verwenden {} anstelle von $(). 2. Sie müssen md5sum nicht verwenden ... Sie können einfach die Strings "wie sie sind" vergleichen –

+1

@ I-V '$ {...}' kann nicht anstelle von '$ (...)' verwendet werden. Sie haben jedoch Recht mit 'md5sum'. – chepner

+0

Warum nicht {}? (Ich möchte wirklich verstehen :)) –