回声重击中会出现多余的百分号

时间:2018-12-15 04:49:23

标签: linux bash shell scripting echo

我下面有以下脚本,该脚本用于演示CPU利用率:

#!/bin/bash

#Color declarations
RED='\033[0;31m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
LIGHTBLUE='\033[1;34m'
LIGHTGREEN='\033[1;32m'
NC='\033[0m' # No Color

a=1
b=3
end=$((SECONDS+120))

echo "CPU Utilization:"
echo "1%"

while [ $SECONDS -lt $end ] ; do

        echo -e "${GREEN}\e[1A$((a+RANDOM%(b-a))).$((RANDOM%99))%${NC}"

        sleep 1

done

由于某种原因,当回显百分比时,将出现两个百分号,而不是数字的最后一位和一个百分号。例如,有时输出为2.7 %%,而不是2.72%。当我删除百分号时,一切正常,但是即使我在百分号和随机数生成之间包含一个空格,百分号仍会偶尔出现。有人知道如何解决此问题吗?具体来说,问题在于此处的百分号:

echo -e "${GREEN}\e[1A$((a+RANDOM%(b-a))).$((RANDOM%99))%${NC}"
                                                        ^

1 个答案:

答案 0 :(得分:3)

您的代码正在覆盖已经存在的内容,但是可能会留下一个百分号而不会被覆盖。如果以前的结果是

2.33%

这次您正在写

2.7%

在同一空间中,它仅覆盖前四个字符,因此保留前一个百分号。因此,您应该添加一个空格,但要在百分号之后