Имеет смысл использовать скрипт awk
для создания функции awk
...
$ awk -f script.awk file
function check() {
if (marks < 80) return "green"
if (marks > 80) return "yellow"
}
Где script.awk
это
BEGIN {
FS = ","
printf("function check() {\n")
}
{
printf("\tif (%s %s %s) return \"%s\"\n", $1, $2, $3, $4)
}
END {
printf("}\n")
}
Это просто перебирает строки в файле, разделенном запятыми -, и использует поля для вывода операторов if
и return
. Их будет столько, сколько строк во входном файле.
Я позволяю блокам BEGIN
и END
выполнять функции верхнего и нижнего колонтитула, а блок BEGIN
дополнительно устанавливает разделитель полей ввода в виде запятой.
Проверка правильности ввода не выполняется. Это, вероятно, вошло бы в основной блок в теле скрипта.
Перенаправить вывод скрипта в файл, например. color.awk
.
Добавление дополнительной строки во входной файл,
marks,==,80,red
приведет к
function check() {
if (marks < 80) return "green"
if (marks > 80) return "yellow"
if (marks == 80) return "red"
}
Связанные:
Nslookup — это программа для запроса серверов имен доменов в Интернете . Nslookup очень хорош для запросов DNS-серверов, но он не дает полной картины, когда дело доходит до разрешения имен.
В Linux разрешение имен чаще всего контролируется NSS , который настраивается с помощью /etc/nsswitch.conf
. В частности, эта конфигурация содержит запись hosts
. Например:
hosts: files dns
В приведенной выше записи вы можете видеть, что первое, что нужно запросить, это files
, за которым следует dns
, что означает, что /etc/hosts
будет запрошено перед DNS. Существуют и другие варианты, включая LDAP , Multicast DNS и WINS .
Отвечая на ваш вопрос напрямую, SSH преобразует имя хоста в IP-адрес, используя NSS (, извлекая результаты из нескольких источников ), где nslookup запрашивает только DNS.
Вы можете проверить, какой IP NSS разрешает имя хоста в с помощью getent. Например, чтобы разрешитьsomename
:
getent hosts somename
Также В случае SSH вы можете настроить информацию о хосте в /etc/ssh/ssh_config
и ~/.ssh/config
. Это даже позволит вам указать IP-адрес для имени хоста, полностью пропуская разрешение имени.:
Следующее указывает SSH использовать 192.168.1.25
как для dev
, так и для dev.example.com
.SSH будет использовать этот адрес вне зависимости от того, эти имена существуют как DNS-имена для другого IP-адреса:
# contents of $HOME/.ssh/config
Host dev dev.example.com
HostName 192.168.1.25
Филип уже почти у цели, но направляется в .ssh/config
крысиную нору, которую вряд ли ты устроил.
Команды...
getent hosts somename
...запрашивает NSS, используя строку поиска hosts:
в /etc/nsswitch.conf
, а не просто DNS, как это делает nslookup
. Скорее всего, ваша среда Unix использует более одной службы имен; возможно, какой-то тип интеграции с AD.