массив bash ведет себя странно

I have CentOS 7.5 18.04 running here and have been told that system will be upgraded automatically if a newer OS is available

Автоматическое обновление установленных пакетов не выполняется, если yum-cronне настроено для автоматического -обновления!

Сохранение текущего уровня обновления ядра :Исключить все пакеты ядра *в/etc/yum.conf:Добавить текстовую строку...

exclude kernel*

Примечание. :Важна дикая -карта (*).

Примечание 2 :Версия ядра не меняется при обновлении. "Нумерация уровней исправлений" делает. Текущий kernel-3.10.0-957.27.2.el7. Вы можете обновить до последней версии с помощью# yum install kernel

Примечание 3 :Отсутствие обновления не изменит ОС. Это по-прежнему CentOS 7. «Нумерация уровней обновления» может измениться :. Текущим является «7.6.1810».

Старые обновления для CentOS 7.5 18.04http://vault.centos.org/7.5.1804/updates/x86_64/Packages/

1
19.10.2021, 09:23
1 ответ
  1. Why is the glob not expanding in the subshell for the command ls -d ?

Вероятно, вы отключили подстановку с помощью set -f. Для демонстрации:

$ touch firefox-1 firefox-2
$ arr=( firefox-* ); declare -p arr
declare -a arr=([0]="firefox-1" [1]="firefox-2")
$ set -f
$ arr=( firefox-* ); declare -p arr
declare -a arr=([0]="firefox-*")
  1. With compgen -G, how are the values being stored in the array? the output seems like each entry in the array is storing both the directory entry with the second one with its own index array?

При выполнении arr=( "$(compgen -G /tmp/firefox-*)" )двойные кавычки принудительно сохраняют вывод compgen как одиночный элемент в массиве. В этом случае, чтобы прочитать строк вывода в массив, используйте mapfileс подстановкой процесса:

$ mapfile -t arr < <(compgen -G./firefox-*)
$ declare -p arr
declare -a arr=([0]="./firefox-1" [1]="./firefox-2")
  1. Is the output from terminal for both commands different from the script, or am i missing something?

Похоже, ваша интерактивная оболочка — zsh. Кроме того, вам не хватает синтаксиса расширения параметров для элементов массива, требующих фигурных скобок(3.5.3 Расширение параметров оболочки ), и что массивы bash индексируются, начиная с нуля:

echo "${arr[0]}"
1
19.10.2021, 14:41

Теги

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