Znalazłem tylko, jak czekać na dane wejściowe użytkownika. Chcę jednak tylko zatrzymać, aby while true
komputer nie zawiesił się.
Próbowałem pause(1)
, ale mówi -bash: syntax error near unexpected token '1'
. Jak można to zrobić?
Znalazłem tylko, jak czekać na dane wejściowe użytkownika. Chcę jednak tylko zatrzymać, aby while true
komputer nie zawiesił się.
Próbowałem pause(1)
, ale mówi -bash: syntax error near unexpected token '1'
. Jak można to zrobić?
Odpowiedzi:
Użyj sleep
polecenia.
Przykład:
sleep .5 # Waits 0.5 second.
sleep 5 # Waits 5 seconds.
sleep 5s # Waits 5 seconds.
sleep 5m # Waits 5 minutes.
sleep 5h # Waits 5 hours.
sleep 5d # Waits 5 days.
Można również stosować ułamki dziesiętne, określając jednostkę czasu; na przykładsleep 1.5s
thread.sleep
funkcję w wielu językach programowania @Geremia
A co z:
read -p "Press enter to continue"
PAUSE
W Pythonie (pytanie było pierwotnie oznaczone Pythonem) musisz zaimportować moduł czasu
import time
time.sleep(1)
lub
from time import sleep
sleep(1)
Ponieważ skrypt powłoki jest po prostu
sleep 1
Który wykonuje sleep
polecenie. na przykład./bin/sleep
python -c "import time; time.sleep(1)"
zamiast sleep 1
:)
python -c "import time; time.sleep(0.8)"
zamiast tego. Ale potem musimy wziąć pod uwagę, ile faktycznie trwa uruchamianie Pythona. Musisz uruchomić to: date +%N; python -c "import time; time.sleep(0)"; date +%N
aby określić, ile nanosekund zajmuje python, aby rozpocząć. Ale obejmuje to również pewne koszty ogólne od daty uruchomienia. Uruchom to, date +%N; date +%N
aby znaleźć to narzut. Obciążenie Pythona na mojej maszynie było faktycznie bliższe 0,14 sekundy. Więc chcę time.sleep(0.86)
.
Zdaję sobie sprawę, że trochę się z tym spóźniam, ale możesz także zadzwonić do snu i przekazać niespokojny czas. Na przykład, jeśli chcę poczekać 3 sekundy, mogę zrobić:
/bin/sleep 3
4 sekundy wyglądałyby tak:
/bin/sleep 4
W Mac OSX uśpienie nie zajmuje minut / etc, tylko sekundy. Więc przez dwie minuty
sleep 120
Uruchom wiele snu i poleceń
sleep 5 && cd /var/www/html && git pull && sleep 3 && cd ..
Poczeka to 5 sekund przed wykonaniem pierwszego skryptu, a następnie ponownie zasypi przez 3 sekundy, zanim ponownie zmieni katalog.
W skrypcie możesz dodać następujące czynności między czynnościami, które chcesz wstrzymać. Spowoduje to wstrzymanie rutyny na 5 sekund.
read -p "Pause Time 5 seconds" -t 5
read -p "Continuing in 5 Seconds...." -t 5
echo "Continuing ...."
-t 5
to przerwie skrypt po 5 sekundach, nie będzie kontynuowane, przynajmniej według tej strony
read -r -p "Wait 5 seconds or press any key to continue immediately" -t 5 -n 1 -s
Aby kontynuować po naciśnięciu dowolnego przycisku
Możesz sprawić, że zaczeka, używając $ RANDOM, domyślnego generatora liczb losowych. Poniżej używam 240 sekund. Mam nadzieję, że pomaga @
> WAIT_FOR_SECONDS=`/usr/bin/expr $RANDOM % 240` /bin/sleep
> $WAIT_FOR_SECONDS
sleep
! (pause
,wait
lubdelay
byłoby bardziej sensowne i łatwiejsze do zapamiętania.)