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
标记为一个好主意。