Я хочу сравнить Hello World
с hello world
. Результат должен быть правдой, как если бы они были равны. Я делаю:Сравнение строк без учета регистра
while read line; do
newLine="$newLine$line"
done < $1
newp="Hello World"
if ((${newp,,}==${newLine,,})); then
echo "true"
else
echo "false"
fi
, когда я прохожу текстовый файл, состоящий из:
#filename: file.txt
hello world
Выхода кажется:
./testScript.txt: line 20: 0à»: hello world==hello world : syntax error in expression (error token is "world==hello world ")
+ echo false
Что я здесь делаю неправильно? Кроме того, немного несвязанный, есть ли способ передать строку, которая находится в file.txt
, в строку (newLine), не делая этого while
Я сделал?
'((a == b))' для математики и чисел. '[[" $ a "=" $ b "]]' для строк. Пробелы не являются необязательными. –
Даже если вы получите ответ на свой конкретный вопрос, окружающий цикл означает, что любой тест будет говорить, что 'x \ y' соответствует' xy' и может иметь другое совпадение false [mis]. См. [Why-is-use-a-shell-loop-to-process-text -emed-bad-practice] (http://unix.stackexchange.com/questions/169716/why-is-using-a-shell -loop-процесс-текст рассмотренной-плохая практика). –
Вы можете использовать 'grep -v' с одним стилем' hello world' для тестирования другого стиля. – boardrider