Учитываются ли ключевые слова в resolv.conf с учетом регистра?

for f in *; do [ ! -w "$f" ] || rm -- "$f"; done

Или с && вместо || :

[ -w "$f" ] && rm -- "$f"

(Я предпочитаю || , поскольку я использую set -e a много и голое, неудачное предложение && вызовет выход в этом режиме)

4
21.08.2017, 14:23
1 ответ

Если посмотреть на исходный код glibc , макрос, который пытается сопоставить строки вроде domain и nameserver , -

#define MATCH(line, name) \
  (!strncmp(line, name, sizeof(name) - 1) && \
  (line[sizeof(name) - 1] == ' ' || \
   line[sizeof(name) - 1] == '\t'))

и строка, которая соответствует ключевое слово search выглядит так:

if (MATCH(buf, "search")) {

strncmp () чувствительно к регистру, поэтому эта строка будет соответствовать только строчным поиску (за которым следует либо пробел, либо вкладку). То же самое и с другими ключевыми словами.

Код синтаксического анализа игнорирует несовпадающие строки, поэтому вы не увидите ошибки, если случайно используете SEARCH вместо search : строка будет просто проигнорирована.

4
27.01.2020, 20:47

Теги

Похожие вопросы