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
делает что-то совсем другое.Связанные:
Во-первых, только 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.)