пока команда не будет завершена; делать - PullRequest
1 голос
/ 29 июля 2010

Я хочу иметь возможность echo некоторые вещи (например, спиннер), пока команда (точнее дамп базы данных) все еще выполняется.минут: «мой сценарий еще работает?»

Предложения в bash?while?until?

Спасибо,

Ответы [ 3 ]

0 голосов
/ 29 июля 2010

В скрипте:

#!/bin/bash
your-prog &
while jobs %?your-prog > /dev/null 2>&1; do echo -ne '/\r'; sleep 1; echo -ne '\\\r'; sleep 1; done
0 голосов
/ 29 июля 2010

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

#!/bin/bash

if [[ -z "$*" ]] ; then
    echo "Usage:  $0 command [args] ..."
    exit 0
fi

"$@" &
echo -n "Running '$@'... "

BACKSPACE='\010'
SPINNER='|/-\'
INDEX=0
while kill -0 $! 2>/dev/null ; do
    echo -n -e "${SPINNER:$INDEX:1}"
    sleep 0.2
    (( INDEX = ($INDEX + 1) % 4 ))
    echo -n -e "$BACKSPACE"
done
echo -e "${BACKSPACE}done."

Пример использования:

$ ./spinner sleep 3
Running 'sleep 3'... [spinner displayed here]

Через некоторое время:

$ ./spinner sleep 3
Running 'sleep 3'... done.
$

(Мой способ сценариев bash основан на методе проб и ошибок, поэтому предложения по улучшению этого сценария приветствуются.)

0 голосов
/ 29 июля 2010

while - и убедитесь, что PID запущенного процесса все еще работает. Вы можете получить PID, используя $?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...