Проблема может заключаться в том, что параметр оболочки extglob
установлен в интерактивной оболочке, но не в оболочке сценария.
$ shopt -u extglob
$ echo "${var1/${pattern}/}"
/some/path/to/file/the_file.arbitrary.n.ext.0.random.ext
$ shopt -s extglob
$ echo "${var1/${pattern}/}"
/some/path/to/file/the_file.arbitrary.n.ext
Таким образом, вы можете попробовать поместить shopt -s extglob
сразу после строки shebang в скрипте.
Из справочного руководства Bash :
Если параметр оболочки
extglob
включен с помощью встроенной функцииshopt
, несколько расширенных шаблонов распознаются операторы сопоставления .... Составные шаблоны могут быть сформированы с использованием одного или нескольких из следующих подшаблонов:
? (PATTERN-LIST)
Соответствует нулю или одному вхождению заданных шаблонов .
Хорошо -так что это было довольно невнимательно с моей стороны, но вот в чем проблема. У меня был domain1.local
, указанный в параметре domain
в /etc/resolv.conf
### Standard Search domains:
search domain1.local domain2.local
domain domain1.local # removed this line
После того, как я запустил отладку nslookup и заметил, что он пытается добавить domain1.local
к nslookup, я удалил это, и это явно устранило проблему.
user@host:~$ nslookup hosty
Server: 192.16.1.110
Address: 192.16.1.110#53
Name: hosty.domain2.local
Address: 192.16.48.20
Довольно глупо с моей стороны, но на случай, если кто-то еще совершит ту же ошибку, возможно, это может им помочь.
Из руководства resolvconf , относительно dns -search
Опция dns -nameservers также принимается и, в отличие от dns -nameserver, может иметь несколько аргументов, разделенных пробелами. Параметр домена dns -устарел в пользу поиска dns -.
Результирующая строфа может выглядеть, как в следующем примере.
iface eth0 inet static
address 192.168.1.3
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameserver 192.168.1.254
dns-nameserver 8.8.8.8
dns-search foo.org bar.com
Н.Б.:На компьютере, на котором resolvconf только что был установлен или будет установлен и который ранее полагался на статический файл /etc/resolv.conf ,
• информация о сервере имен в этом статическом файле, (, то есть информация о сервере имен, домене,строки поиска и списка сортировки )должны быть перенесены в соответствующий раздел iface (s )в /etc/network/interfaces (5 ), как только что было описано.
отказ от ответственности :Обычно я удаляю сетевой менеджер, resolvconf и systemd со своих серверов Debian.