Ich möchte Hello World
zu hello world
vergleichen. Das Ergebnis sollte stimmen, als wären sie gleich. Ich tue:Vergleichen Zeichenfolgen fallunabhängig
while read line; do
newLine="$newLine$line"
done < $1
newp="Hello World"
if ((${newp,,}==${newLine,,})); then
echo "true"
else
echo "false"
fi
, wenn ich eine Textdatei übergeben, bestehend aus:
#filename: file.txt
hello world
Der Ausgang scheint zu sein:
./testScript.txt: line 20: 0à»: hello world==hello world : syntax error in expression (error token is "world==hello world ")
+ echo false
Was mache ich falsch hier? Auch, ein wenig unabhängig, gibt es eine Möglichkeit, die Zeile, die in file.txt
ist, an eine Zeichenfolge (newLine) übergeben, ohne dass while
getan habe ich getan?
'((a == b))' ist für Mathematik und Zahlen. '[[" $ a "=" $ b "]]] steht für Strings. Die Leerzeichen sind nicht optional. –
Auch wenn Sie eine Antwort auf Ihre spezifische Frage erhalten, bedeutet die umgebende Schleife, dass jeder Test sagt, dass xy mit xy übereinstimmt und andere falsche [mis] Übereinstimmungen haben kann. Siehe [why-is-using-a-shell-loop-to-process-text-built-bad-practice] (http://unix.stackexchange.com/questions/169716/why-is-using-a-shell) -loop-to-process-text-betrachtet-schlechte-Praxis). –
Sie können 'grep -v' mit einem Stil von' Hallo Welt' verwenden, um den anderen Stil zu testen. – boardrider