Package names are stored in a text file and grouped by row symbol #step{1,2,3...}, what I'd like to do is : step1)to execute emerge --pretend package, step2) manually collect USE flags from pretendedly emerging execution result shown on the screen, set make.conf, and then step3) execute emerge package. Charles gave me an excellent demonstration of how to deal with row symbol #step at here.
My question is if the text file looks like below which only contained with packagenames, is it possible to use Charles' demonstration, or how should I rewrite it? In the function getSteps() at the line printf '%s\n' "$line", I've modified it a little bit, it didn't work.
Any ideas? Thank you! The text file contained with package names:
#step1
grub
genkernel
sys-kernel/gentoo-sources
sys-apps/pciutils
...
#step2
dev-libs/boost
sys-cluster/ceph
sys-fs/lvm2
...
Charles' demonstration is at: here
What I'd like to have is something like:
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
}
This line below worked, but the problem is the 'while loop' will keep going, there is no way for user to select an option and then continue. Any ideas?
printf '%s\n' "emerge --pretend $line" | sh -
Furthermore, is it possible to store the output into a variable for further analysis?