Bash сравнить две строки с обратной косой чертой в строке - PullRequest
0 голосов
/ 06 декабря 2018

Это не моя точная проблема, но для простоты, здесь мы идем.

Если я запускаю следующее, мне нужно это, чтобы вернуть совпадение файлов, но по какой-то причине в моей строке, если она содержит обратную косую черту, всегда будет ошибка.

Файл testmonitor.txt содержит только следующий текст

hello \ world

#!/bin/bash
file=$(cat /tmp/testmonitor.txt)
if [[ $file == $file ]]; then  
     echo "files match"   
else  
    echo "files not matching"  
fi

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Без кавычек, правая часть обрабатывается как шаблон, а шаблон hello\ world эквивалентен шаблону hello world, который не соответствует буквальному тексту hello\ world. * 1006.*

Цитируйте правую часть, чтобы убедиться, что вы выполняете точное сравнение строк вместо сопоставления с образцом.

if [[ $file == "$file" ]];
0 голосов
/ 06 декабря 2018

Обычно переменные в двойных кавычках решают такие проблемы

if [[ "$file" == "$file" ]]; then  
...