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標誌或關鍵字,它什麼都不會做。 –