Answers:
以下命令是对替代方法的(轻微)改进,因为sudo apt-get install在软件包列表为空时不执行。
xargs -a <(awk '! /^ *(#|$)/' "$packagelist") -r -- sudo apt-get install
请注意,该-a选项直接从文件而不是标准输入中读取项目。我们不希望将文件传输到其中,xargs因为stdin必须保持不变,以供使用apt-get。
xargs是正确的方法。绝妙的把戏<()。
xargs可以确保ARG_MAX 未达到目标。
xargs -a $(awk '/^\s*[^#]/' "$packagelist") -r -- sudo apt-get -y install,而不是“ <(”而是“ $(”,-y而apt-get 的选项将是一个好主意。
awk到文件描述符中xargs -a以供读取。所以你一定要<(而不要$(。尝试一下,您就会明白我的意思。如果命令将在无人值守的情况下运行,并且您已经确切知道将要安装的内容,那么可以肯定,将其-y标记为一个好主意。