因此,在中没有本机工具
bash
或者我知道的其他外壳,但您可以在下面使用
printf
&此自定义函数可实现您所需的功能。这个小片段将打印安装进度条,您只需通过普通函数调用即可打印
printProgressBar
在脚本中的不同位置,您希望显示它。
function printProgressBar() {
local progressBar="."
printf "%s" "${progressBar}"
}
n
在函数调用中的步骤中,将此函数调用插入。对于错误消息的实际打印,请在变量中填写安装标题
installOf
假设从你的例子中可以
"Installing OpenCv "
(或)
"Installing Qt "
,在执行以下步骤之前,在该变量中使用
installOf="Installing OpenCv "
printf "%s" "${installOf}"
对于最终状态,由于您没有告诉我们如何获得安装的总体状态,假设您发现它取决于成功或失败,请在另一个变量中更新它
installStatus="Success"
printf " [%s]\n" "${installStatus}"
所以综合起来,我有一个简单的while循环,它运行函数20次调用,您可以使用类似的方法在脚本中的不同位置采用函数调用。
installOf="Installing OpenCv "
function printProgressBar() {
local progressBar="."
printf "%s" "${progressBar}"
}
printf "%s" "${installOf}"
while (( cnt < 20))
do
((cnt++))
printProgressBar
sleep 1
done
# You can determine the status of your installation as your script demands
installStatus="Success"
printf " [%s]\n" "${installStatus}"
运行脚本会产生与您的需求类似的结果,
$ bash script.sh
Installing OpenCv .................... [Success]
注意,每个
.
表示函数调用的每个实例。
更新:-
查看代码逻辑,您缺少了后台作业如何工作的一点。你的背景功能
InstEssent
在安装某个模块时。要有效使用进度条,您需要不断轮询后台作业,以查看它是否仍在使用
kill -0 "$pid"
命令,如果正在运行,则打印安装栏,如下面的代码所示。
function InstEssent()
{
sudo apt-get -y install build-essential
sleep 5
}
printf "%s" "${installOf}"
InstEssent &
pid_InstEssent="$!"
while kill -0 "$pid" 2> /dev/null
do
printProgressBar
sleep 1
done