копать :синтаксический анализ /etc/resolv.conf не удалось

set -- cat "a b"

"$@"

Это запустит catс одним аргументом a b. Расширение "$@"(, включая двойные кавычки! )будет списком индивидуально цитируемых позиционных параметров. Позиционные параметры устанавливаются с помощью set.

Однако включение имени команды в сам список является редкостью. Было бы чаще видеть

set -- "a b"

cat "$@"

или, если вы хотите сохранить фактическую переменную имени команды,

cmd=cat
set -- "a b"

"$cmd" "$@"

Если вы в -между установкой операндов имени файла и запуском команды хотите добавить в команду больше имен файлов или параметров, просто измените$@:

cmd=cat
set -- "a b"

# later (adding more files to the end):
set -- "$@" "more files" "some glob here-"[0-9]

# later (adding an option at the front):
set -- -v "$@"

"$cmd" "$@"

Обратите внимание, что будет сложно добавить в начало $@, если имя команды уже есть. В этом случае вам придется временно shiftимя команды отключить от $@в отдельную переменную, добавить то, что вы хотите добавить, а затем снова добавить имя команды:

cmd=$1
shift
set -- "$cmd" -v "$@"

Обычно мы хотим использовать set --, а не просто set, чтобы установить позиционные параметры. --запрещает синтаксическому анализатору параметров командной строки обнаруживать параметры командной строки после этой точки в списке аргументов командной строки. Обратите внимание, что без --было бы невозможно добавить строку -vперед $@с set, поскольку set -vделает что-то совсем другое.

Связанные:

-2
01.05.2020, 11:07
1 ответ

Во-первых, только IP-адрес должен сопровождаться nameserver. Вы не можете использовать ns1.name.comи т. д. Вы совершаете основную ошибку, неправильно настраивая /etc/resolv.confс помощью nameserverver ns1.name.com. Это вы уже успели исправить, закомментировав их.

Во-вторых, разрешено только 3 сервера имен на /etc/resolv.conf. Таким образом, любой четвертый сервер имен, который вы добавите, будет проигнорирован. Так что в вашем /etc/resolv.conf, nameserver 67.207.67.3будут проигнорированы.

Цитата из справочных страниц(man resolv.conf):

nameserver Name server IP address
              Internet address of a name server that the resolver should query, either an IPv4 address (in dot notation), or an IPv6 address in colon (and
              possibly dot) notation as per RFC 2373.  Up to MAXNS (currently 3, see <resolv.h>) name servers may be listed, one per  keyword.   If  there
              are  multiple  servers,  the resolver library queries them in the order listed.  If no nameserver entries are present, the default is to use
              the name server on the local machine.  (The algorithm used is to try a name server, and if the query times out, try the next, until  out  of
              name servers, then repeat trying all the name servers until a maximum number of retries are made.)
3
28.04.2021, 23:16

Теги

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