2010-02-24 1 views
3

Во-первых, Спасибо всем за вашу помощь. Я могу увидеть успешное завершение моего проекта через пару дней.Строка состояния в bash

Мне нужно знать, как поместить строку состояния в Shell Script, что-то вроде этого.

No_of_files=55 
index=0 

while [ $index -lt $No_of_files ] 
do 
    echo -en "$index of $No_of_Files Completed" 
    index=$((index + 1)) 
done 

Ожидаемый результат: 1 из 55 Завершенный 2 из 55 завершенного

Каждая итерация, индекс должен быть заменен, но не другие символы.

Благодаря Киран

+0

Если ответ подходит вам, обязательно отметьте его как принятый ответ. Это будет долгим шагом в вашей способности получить более подробные ответы в будущем и поможет тем, кто случится с этим с тем же вопросом. – SiegeX

+0

Я новичок в этом форуме и удивляюсь, как быстрые люди были готовы помочь друг другу .. Спасибо, что указали это, ну снова .. kiran – Kiran

ответ

6

Вы можете распечатать \r вернуться в начало строки, так что вы можете переписать последнюю вещь печататься с новым сообщением:

for ((I=0 ; I < 10 ; I++)); do 
    echo -en "\r$I of 10 completed" 
    sleep 1 
done 
echo 

Это выглядит просто $I число будет меняться.

+1

+1 и удалил мой ответ, потому что мне нравится '\ r' лучше, чем' tput hpa 0', так как я уверен, что он более портативен. – SiegeX

+0

Это то, что я искал .. Удивительно .. Спасибо – Kiran

3

вы забыли увеличиваем переменную $ индекса. ((index++)). Вы можете увидеть here также для сценария, чтобы сделать прогресс бар

вот бедняка версия

No_of_files=55 
index=0 

while [ $index -lt $No_of_files ] 
do 
    echo -ne "\r$index of $No_of_files Completed" 
    ((index++)) 
    sleep 1 
done 
+0

Спасибо .. я забыл добавить .. :) Спасибо, что указали это – Kiran

+0

Я бы не рекомендовал использовать 'clear', потому что это уничтожит любую другую информацию о экране, которую вы, возможно, захотите или добавите в будущем. 'tput hpa 0' или даже эхо из кучки' \ b' - лучший способ пойти. – SiegeX

 Смежные вопросы

  • Нет связанных вопросов^_^