1
包名存储在文本文件中,并按行号#step {1,2,3 ...}分组,我想要做的是:step1 )执行emerge --pretend package
,第2步)手动收集屏幕上显示的假装显示的执行结果中的USE标志,设置make.conf,然后执行步骤3)执行emerge package
。查尔斯给了我一个很好的示范,说明如何在here处理行符号#step。如何在bash中的while循环中选择一个选项
我的问题是,如果文本文件看起来像下面只包含包名,有可能使用查尔斯的演示,或者我该如何重写它?在printf '%s\n' "$line"
行的函数getSteps()中,我对它进行了一些修改,但没有奏效。
任何想法?谢谢! 载带包名的文本文件:
#step1
grub
genkernel
sys-kernel/gentoo-sources
sys-apps/pciutils
...
#step2
dev-libs/boost
sys-cluster/ceph
sys-fs/lvm2
...
查尔斯的示范是:here
我想吃点什么是一样的东西:
getSteps() {
local running=0
while read -r line; do
if ((running)); then
if [[ $line = "#"* ]]; then
return
else
# printf '%s\n' "$line"
#step 1)
emerge --pretend $line
#step 2)
select packageType in "PACKAGEUSE" "PACKAGEKEYWORDS" "PACKAGELICENSE"
do
case $REPLY in
1) read USE flags as an input
set make.conf
#step 3)
emerge $line
;;
2) ....
done
fi
else
[[ $line = "#"$1 ]] && running=1
fi
done <stepFile
}
以下工作这条线,但问题是'while循环'将继续,用户无法选择一个选项然后继续。 任何想法?
printf '%s\n' "emerge --pretend $line" | sh -
此外,是否可以将输出存储到变量中以供进一步分析?
为什么我要这些包分成不同步骤的原因是,在步骤1,我能够远程涌现包在另一台计算机上,这是方便我收集USE标记,但在步骤2,特别是当我尝试出现boost和ceph时,我无法远程执行此操作。甚至更多,我必须先编译内核然后出现它们。 –
'emerge --pretend'的输出是什么样的?你打算如何获得USE标志?在进入下一行之前,您是否打算为每条生产线完成三个步骤? (这很好,也许是正确的想法,它不是唯一的方法,你可能想这样做。)“设置make.conf”是什么意思? –
'livecd /#emerge --preep ceph 这些是可以合并的包,依次为: 计算依赖关系... done! [ebuild N] dev-libs/libaio-0.3.110 USE =“static-libs {-test}” [ebuild N] dev-libs/lzo-2.09 USE =“static-libs -examples” ... ' 它只是显示出你需要出现这些软件包的USE标志或关键字,它什么都不会做。 –