На этот вопрос уже есть ответ здесь:
Выглядит хорошо :
for i in package1 package2 package3; do
sudo apt-get install -y $i
done
но с пакетами, перечисленными в файле:
package1
package2
..
каждый в отдельной строке. Ищете простейший сценарий для чтения, производительность на самом деле не проблема. Конечно, странный пакет потребует некоторого вмешательства человека во время установки для согласования или настройки.
Кстати, каков «настоящий» способ работы с большими списками пакетов, которые нужно установить? Я просто ищу обезьяну-видеть-обезьяну- делать .
Существует xargs
программа, которая преобразовывает файл к параметрам командной строки. Просто предварительно ожидайте xargs
к команде (со всеми аргументами), для которого требуется предоставить дополнительные аргументы из файла (позволяют нам назвать его list.txt
) и позвольте xargs
считать Ваш файл с помощью стандартного перенаправления ввода.
< list.txt xargs sudo apt-get install -y
Можно протестировать его путем помещения echo
прежде (или вместо) sudo
или удаление -y
опция.
Что-то вроде этого?
# check that the filename was supplied (keeping it simple for the example)
set -o nounset
packagefile=$1
# initialize the package variable
packages=''
# read the lines of the package file
while IFS= read -r line; do
packs+=" $line"
done < $packagefile
# apt install all of the packages
apt install -y $packs