bash aptitude установить список пакетов из командной строки

Я нахожусь в Debian GNU / Linux 8 Jessie и пытаюсь установить пакеты с aptitude в сценарии bash из командной оболочки. Переменная оболочки интерпретируется как один пакет «pkg1 pkg2 pkg3 …» и не найдена, или обрабатывается только первый пакет в списке.

#!/usr/bin/env bash set -euo pipefail IFS=$'\n\t' # being treated as a single package with spaces in the name # package "git gist curl build-essential cmake " not found apt_packages="$(cat packages.txt | grep -Ev '^$|^#' | tr '\n' ' ')" # only the first package (git) in the list is parsed and installed apt_packages=( "$(cat packages.txt | grep -Ev '^$|^#')" ) aptitude install "$apt_packages" 

И packages.txt – это то, что вы себе представляете:

 git gist curl # build from source build-essential cmake 

One Solution collect form web for “bash aptitude установить список пакетов из командной строки”

После удаления комментариев из packages.txt package.txt у вас есть список имен пакетов, разделенных пробелами. Существует оператор оболочки для разделения строки на части, разделенные пробелами: некорректная переменная или подстановка команд. Неупорядоченное расширение фактически является оператором split + glob: он рассматривает результат расширения как список шаблонов глобуса, которые должны быть расширены. Но поскольку имена пакетов deb не содержат никаких подстановочных символов оболочки, шаг glob ничего не сделает, поэтому вы можете использовать оператор split + glob.

По умолчанию пробелы и новые строки являются действительными разделителями, поэтому вам не нужно преобразовывать символы новой строки в пробелы. Просто сохраните IFS по умолчанию. И вам также не нужно снимать пустые строки, так как несколько разделителей не хуже одного (когда разделители являются пробелами).

 aptitude install $(grep -v '^#' packages.txt) 
  • найти файл, скопировать, но с другим именем
  • Попытка сохранить вывод команды файла в переменную, но на выходе указано «нет такого файла существует»?
  • zsh: исключение файлов из шаблона
  • Самораспаковывающиеся скрипты: tar -xO и dd
  • Требуется вывод в хорошем формате с использованием сценария оболочки
  • распаковать вложенные .zip-файлы по сценарию оболочки
  • выполнение скрипта после выхода из системы
  • Как перемещать файлы с тем же именем и объединяться
  • Если «bash <file>» работает, почему «source <file>» выдает ошибку?
  • Bash regex, строка соответствия из двух строк
  • Несколько входов в одной команде
  • Linux и Unix - лучшая ОС в мире.