我想用注释和换行符来组织一个包含依赖项的大型文件。例如:
# 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
我假设您已更改变量的内容IFS
。我建议将您的 IFS 变量重置为其默认值:
IFS=$' \t\n'
答案2
当您翻译换行符时,您必须使用在 bash 严格模式下有效的字段分隔符才能使单词分割起作用。\t
这里选择的是 tab 或:
sudo apt-get install $(grep -vE "^\s*#" my_dependencies | tr "\n" "\t")