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) 
  • Напишите один и тот же файл несколько раз в один файл, используя dd
  • Прочитайте два текстовых файла, объедините каждую строку
  • Вычислить разницу дат между последней измененной датой файла и СЕЙЧАС с использованием сценария оболочки
  • Почему я не могу убить тайм-аут, вызванный с помощью скрипта Bash нажатием клавиши?
  • как выполнять команды на удаленном сервере как разные пользователи
  • sed специальный символ заменить не работает в сценарии оболочки
  • Ошибка при замене части команды curl переменной
  • сценарий оболочки для управления количеством процессов пользователя
  • Сценарий оболочки, в котором выполняется mono_service.exe в качестве фоновой задачи
  • linux периодический скрипт проверки системы или утилита
  • подключиться к удаленному серверу через ssh
  • Linux и Unix - лучшая ОС в мире.