Как установить список пакетов с файлом с комментариями

257
tarabyte

Я хочу организовать большой файл зависимостей с комментариями и новыми строками. Например:

# Widget 1 dependences package_a package_b  # Widget 2 dependencies package_x package_y package_z 

Эта строка, кажется, имеет смысл, но я не понимаю, почему я получаю ошибку, когда не могу найти элементы из списка того, что именно я хочу распечатать:

E: Unable to locate package f2c gfortran libblas-dev liblapack-dev libpcre3-dev libreadline-dev 

Как будто весь мой список, разделенный пробелами, рассматривается как один пакет.

 # Use 'strict mode', because i don't looove debugging #!/bin/bash set -euo pipefail IFS=$'\n\t'  sudo apt-get install $(grep -vE "^\s*#" my_dependencies | tr "\n" " ") echo "$(grep -vE "^\s*#" my_dependencies | tr "\n" " ")" 
1
Но это то, что вы говорите, чтобы сделать это? Это даже не необычно. Как вы можете видеть из вашего вывода, кажется, что один из пакетов отсутствует в доступных вам репозиториях. Seth 6 лет назад 0

2 ответа на вопрос

1
Cyrus

Я предполагаю, что вы изменили содержимое переменной IFS. Я рекомендую сбросить вашу переменную IFS по умолчанию:

IFS=$' \t\n' 
0
tarabyte

Когда вы переводите символ новой строки, вы должны использовать разделитель полей, действительный в строгом режиме bash, чтобы разделение слов работало. Вкладка или \tвыбрана здесь:

sudo apt-get install $(grep -vE "^\s*#" my_dependencies | tr "\n" "\t") 

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