Дополнительный знак процента появляется в эхо Баш - PullRequest
0 голосов
/ 15 декабря 2018

Ниже приведен следующий скрипт, который должен демонстрировать загрузку процессора:

#!/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 голосов
/ 15 декабря 2018

Ваш код перезаписывает то, что уже было там, но может остаться знак процента, который не будет перезаписан.Если предыдущий результат был

2.33%

и на этот раз вы пишете

2.7%

в одном и том же месте, он перезаписывает только первые четыре символа, поэтому предыдущий символ процента остается.Таким образом, вы должны добавить пробел, но после символа процента.

...