1

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

# 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" " ")"

2 ответа2

1

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

IFS=$' \t\n'
0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .