shell 編寫一個帶有進(jìn)度條的程序安裝腳本
需求
使用 shell 寫一個 軟件安裝腳本,帶有進(jìn)度條
示例
#!/bin/bash
# 模擬軟件安裝的步驟列表
steps=("解壓文件" "安裝依賴" "配置設(shè)置" "復(fù)制文件" "")
# 計算總步驟數(shù)
total_steps=${#steps[@]}
# 安裝進(jìn)度的初始值
progress=0
# 打印安裝進(jìn)度函數(shù)
print_progress() {
local current_step=$1
local percentage=$2
local step=$3
# 清除當(dāng)前行
printf "\r\033[K"
# 構(gòu)建進(jìn)度條字符串
local progress_bar=$(printf "[%-${total_steps}s] %d%%" "$(yes "#" | head -n $current_step | tr -d '\n')" "$percentage")
# 打印安裝進(jìn)度
printf "安裝進(jìn)度: %s %s" "$progress_bar" "$step"
}
# 循環(huán)執(zhí)行每個步驟
for ((i=0; i<total_steps; i++)); do
step=${steps[$i]}
# 模擬每個步驟的安裝操作
sleep 1
# 更新進(jìn)度
((progress = (i+1) * 100 / total_steps))
# 打印安裝進(jìn)度
print_progress "$((i+1))" "$progress" "$step"
done
# 打印安裝完成消息
printf "\n軟件安裝完成!\n"在這個示例中,使用 ANSI 轉(zhuǎn)義序列來實(shí)現(xiàn)覆蓋原來的打印信息,并保持進(jìn)度條在同一行顯示。通過使用 \r 進(jìn)行回車,然后使用 \033[K 清除當(dāng)前行的內(nèi)容,可以實(shí)現(xiàn)覆蓋效果。
在 print_progress 函數(shù)中,首先清除當(dāng)前行的內(nèi)容,然后構(gòu)建進(jìn)度條字符串,并使用 \r 實(shí)現(xiàn)回車到行首的效果。進(jìn)度條字符串包含了當(dāng)前步驟的填充部分和進(jìn)度百分比。
最后,通過調(diào)用 print_progress 函數(shù)來打印安裝進(jìn)度,并在安裝完成后打印安裝完成消息。
效果

到此這篇關(guān)于shell 編寫一個帶有進(jìn)度條的程序安裝腳本的文章就介紹到這了,更多相關(guān)shell 進(jìn)度條安裝腳本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
shell腳本實(shí)現(xiàn)監(jiān)控某個進(jìn)程意外停止后拉起進(jìn)程
今天小編就為大家分享一篇關(guān)于shell腳本實(shí)現(xiàn)監(jiān)控某個進(jìn)程意外停止后拉起進(jìn)程,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-04-04
淺析使用?Auditbeat?模塊監(jiān)控?shell?命令的問題
Auditbeat Audited 模塊可以用來監(jiān)控所有用戶在系統(tǒng)上執(zhí)行的 shell 命令,在終端用戶偶爾才會登錄的服務(wù)器上,通常需要進(jìn)行監(jiān)控,本文給大家介紹使用?Auditbeat?模塊監(jiān)控?shell?命令的相關(guān)知識,感興趣的朋友一起看看吧2022-02-02
Shell腳本實(shí)現(xiàn)進(jìn)度條的兩種方式
本文主要介紹了Shell腳本實(shí)現(xiàn)進(jìn)度條的兩種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03

