Извлечение чисел между строками массива bash

У меня возникла та же проблема, когда я сегодня установил Debian 9.5 с графическим интерфейсом. У меня нет этой проблемы, когда я устанавливаю его без графического интерфейса. Наконец, я нашел решение по этой ссылке https://wiki.debian.org/resolv.conf. DHCP запустился автоматически, даже если я установил сеть вручную при его установке. Вы должны отключить DHCP, чтобы решить эту проблему.

echo 'make_resolv_conf() { :; }' > /etc/dhcp/dhclient-enter-hooks.d/leave_my_resolv_conf_alone
chmod 755 /etc/dhcp/dhclient-enter-hooks.d/leave_my_resolv_conf_alone

Если это не решит вашу проблему, я добавил новую строку в файл DHCP-клиента.

vi /etc/dhcp/dhclient.conf

prepend domain-name-servers 127.0.0.1;

Затем я удаляю пакеты resolvconf и network -manger.

apt-get --purge remove resolvconf network-manager

Наконец, если проблема не устранена, необходимо настроить файл resolv.conf, а затем заблокировать этот файл с помощью следующей команды. (Это не работает, если ваш resolv.conf является символической ссылкой.)

chattr +i /etc/resolv.conf

-1
17.05.2020, 21:38
3 ответа

Предполагая, что у вас GNU basenameи все имена заканчиваются на.dmg:

$ basename -s.dmg "${a[@]#*.}"
150
151
152

"${a[@]#*.}"расширяется до каждого имени с удалением начального бита до первого символа точки включительно. Утилита GNU basenameможет удалить суффикс из набора имен файлов с параметром -s.

Результат может быть прочитан в новый массив, n,

readarray -t n < <(basename -s.dmg "${a[@]#*.}")

Поскольку мы используем basename, это также будет работать, даже если в именах файлов указан путь к каталогу:

$ a=(/some/path/List.{150..153}.dmg)
$ readarray -t n < <(basename -s.dmg "${a[@]#*.}")
$ printf '%s\n' "${n[@]}"
150
151
152
153
4
28.04.2021, 23:13
#! /bin/bash

a=(List.150.dmg List.151.dmg List.152.dmg)

for file in "${a[@]}"; do
    number="${file#*.}"
    number="${number%.*}"
    echo "$number"
done
3
28.04.2021, 23:13

Используйтеcut:

printf '%s\n' "${a[@]}" | cut -d. -f2
2
28.04.2021, 23:13

Теги

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