Как grep-файл для текста с апострофами?

#linux #bash #command-line

#linux #bash #командная строка

Вопрос:

Люди… Я кодирую файл Linux bash, и он мне нужен для поиска текста 'Josh''1234 . Есть ли какой-нибудь способ игнорировать эти апострофы? вот что я пробовал: (Josh установлен как usr и 1234 как pas .)

 if grep -q ''$usr''$pas''; then
    echo username and password correct
else
    echo INCORECT
    sleep 10
fi
  

Комментарии:

1. Это вводит в заблуждение. Это одинарные кавычки, а не апострофы.

Ответ №1:

Просто заключайте в двойные кавычки, чтобы одинарные кавычки можно было включать нормально:

 grep "'$usr''$pas"
#    ^           ^
#     ^    ^^
#     single quotes to match
  

Комментарии:

1. Или, если " трудно запомнить, . это только в два раза сложнее: grep .$usr..$pas Это решение предоставлено QND solutions. Чувак, мне действительно нужно сделать что-то более продуктивное… Этот комментарий самоуничтожится…

2. Я предлагаю добавить . after $pas .

3. Почему, @Cyrus ? Немного непонятно, как OP обращается к нему: он упоминает 'Josh''1234 (без каких-либо дополнительных символов после прохождения), но затем ''$usr''$pas'' .

4. @JamesBrown хорошо то " , что он будет продолжать работать, если передача или usr содержит пробел.

5. @fedorqui: Хороший улов.