Intereting Posts

Как сопоставить строку с символами в виде grep?

У меня есть файл с этим содержимым (или похожим):

# cat /var/www/htpasswd foo:$apr1$73wJ8tiQ$HdaRYe2pUMqBf0ZpMJz6h/ 

и я пытаюсь проверить наличие записи в нем, сопоставляя его, например:

 # grep --fixed-string "foo:$apr1$73wJ8tiQ$HdaRYe2pUMqBf0ZpMJz6h/" /var/www/htpasswd # 

но это ничего не значит. Любые идеи, почему и / или как это сделать?

Сначала я подумал, что это знак доллара, но это работает:

 # grep --fixed-string "foo:$ap" /var/www/htpasswd foo:$apr1$73wJ8tiQ$HdaRYe2pUMqBf0ZpMJz6h/ # 

Используйте одинарные кавычки ('), поэтому $ nnn не рассматривается как переменная. Строки с «являются интерполированными строками, с« никакой интерполяцией ».

Heck просто посмотрите на выход, когда вы префедируете эту строку с эхом.

 $ echo "foo:$apr1$73wJ8tiQ$HdaRYe2pUMqBf0ZpMJz6h/" foo:3wJ8tiQ/ $ echo 'foo:$apr1$73wJ8tiQ$HdaRYe2pUMqBf0ZpMJz6h/' foo:$apr1$73wJ8tiQ$HdaRYe2pUMqBf0ZpMJz6h/ 

используйте одинарные кавычки, например:

 grep 'foo:$apr1$73wJ8tiQ$HdaRYe2pUMqBf0ZpMJz6h/' /vaw/www/htpasswd 

Вы должны использовать одинарные кавычки вместо двойных кавычек для аргумента -fixed-strings, чтобы избежать проблем с оболочкой, которую вы используете, интерпретируя результаты до того, как grep получит к ней: https://stackoverflow.com/questions/6697753/difference- между однозначным и-двойными кавычками-в-Башем

grep --fixed-string 'foo:$apr1$73wJ8tiQ$HdaRYe2pUMqBf0ZpMJz6h/' /var/www/htpasswd