Во-первых, это ужасная идея. IgnorePkg
предполагается, что это временная мера, поскольку она, по сути, вызывает частичные обновления , а не то, что является вашим де-факто подходом к управлению пакетами для непрерывного выпуска.
Сказав это, было бы относительно просто создать функцию для достижения вашей цели.
fullupgrade() { pacman -Syu $(awk -F= '/^IgnorePkg/ {print $NF}' /etc/pacman.conf) ; }
Если вы хотите вывести строку, состоящую из элементов массива, разделенных определенным символом, используйте
words=(a b c)
( IFS=,; printf '%s\n' "${words[*]}" )
Использование *
вместо @
в "${words[*]}"
создаст единую строку из объединения всех элементов массива words
. Элементы будут разделены первым символом $IFS
, поэтому мы установили запятую перед расширением.
Я установил IFS
в подоболочке, чтобы избежать непреднамеренной установки его для любой другой операции, кроме единственного расширения, необходимого для создания строки с разделителями-запятыми -для вызова printf
.
Вместо того, чтобы использовать подоболочку для локальной установки IFS
, вы можете вместо этого установить ее, а затем сбросить:
words=(a b c)
IFS=,$IFS
printf '%s\n' "${words[*]}"
IFS=${IFS#?}
Это сначала добавляет запятую в качестве первого символа $IFS
, сохраняя старое значение переменной в виде символов после запятой.
Подстановка параметра ${IFS#?}
удалит первый символ (запятую, которую мы добавили ).