folgendes Shell-Skript
Code: Select all
#!/bin/sh
testseq="12 30 14 43 394 2 2 18 3459 39"
testsort=$(echo "[2, 2, 12, 14, 18, 30, 39, 43, 394, 3459]" | sed -e 's/\[//' -e 's/\]//' -e 's/, / /g')
testsort2=$(echo $testseq | tr ' ' '\n' | sort -n | tr '\n' ' ')
echo $testsort
echo $testsort2
if [ "$testsort" = "$testsort2" ]; then
echo "gleich"
else
echo "ungleich"
fi
# Jetzt wird's merkwürdig...
testsort=$(echo $testsort | tr ' ' 'L' | tr 'L' ' ')
testsort2=$(echo $testsort2 | tr ' ' 'L' | tr 'L' ' ')
if [ "$testsort" = "$testsort2" ]; then
echo "gleich"
else
echo "ungleich"
fi
stefan@localhost ~/tmp $ ./cmptest.sh
2 2 12 14 18 30 39 43 394 3459
2 2 12 14 18 30 39 43 394 3459
ungleich
gleich
Wie kann das sein? Wie man anhand der Ausgabe sieht, sind die Zeichenketten bereits
vor dem ersten Vergleich gleich. Und die Anweisungen
Code: Select all
testsort=$(echo $testsort | tr ' ' 'L' | tr 'L' ' ')
testsort2=$(echo $testsort2 | tr ' ' 'L' | tr 'L' ' ')
[\code]
bewirken ja eigentlich nicht's, trotzdem sind die Zeichenketten danach gleich.
Kann mir das bitte jemand erklären??
Danke, Stefan
PS: Hab gerade versucht ein Skript zu schreiben, was die Ausgaben zweier Programme
vergleicht, und dabie bin ich auf dieses merkwürdige verhalten gestoßen.