Я предполагаю, что вы изменили содержимое переменной IFS
. Я рекомендую сбросить вашу переменную IFS по умолчанию:
IFS=$' \t\n'
Я хочу организовать большой файл зависимостей с комментариями и новыми строками. Например:
# 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" " ")"
Я предполагаю, что вы изменили содержимое переменной IFS
. Я рекомендую сбросить вашу переменную IFS по умолчанию:
IFS=$' \t\n'
Когда вы переводите символ новой строки, вы должны использовать разделитель полей, действительный в строгом режиме bash, чтобы разделение слов работало. Вкладка или \t
выбрана здесь:
sudo apt-get install $(grep -vE "^\s*#" my_dependencies | tr "\n" "\t")