it-swarm.asia

كيف يمكنني إيقاف تشغيل برنامج شل النصي لمدة ثانية قبل المتابعة؟

لقد وجدت فقط كيفية الانتظار لإدخال المستخدم. ومع ذلك ، أريد فقط التوقف مؤقتًا حتى لا يتعطل while true الخاص بي.

جربت pause(1) ، لكنها تقول -bash: syntax error near unexpected token '1'. كيف يمكن أن تتم؟

551
user3268208

استخدم الأمر sleep.

مثال:

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.

يمكن للمرء أيضًا استخدام الكسور العشرية عند تحديد وحدة زمنية ؛ مثلا sleep 1.5s

988
RydallCooper

في Python (تم وضع علامة أصلاً على Python) ، تحتاج إلى استيراد الوحدة الزمنية

import time
time.sleep(1)

أو

from time import sleep
sleep(1)

لسيناريو شل هو مجرد

sleep 1

الذي ينفذ الأمر sleep. على سبيل المثال. /bin/sleep

63
John La Rooy

وماذا عن:

read -p "Press enter to continue"
52
Vonton

أدرك أنني متأخرة بعض الشيء مع ذلك ، ولكن يمكنك أيضًا الاتصال بالنوم وتمضية الوقت الضائع. على سبيل المثال ، إذا أردت الانتظار لمدة 3 ثوانٍ ، يمكنني القيام بما يلي:

/bin/sleep 3

ستبدو 4 ثوان كالتالي:

/bin/sleep 4
37
pcmaster574

في نظام Mac OSX ، لا يستغرق السكون دقائق/إلخ ، بل يستغرق ثوانٍ فقط. لذلك لمدة دقيقتين ،

sleep 120
28
AnneTheAgile

ضمن البرنامج النصي ، يمكنك إضافة ما يلي بين الإجراءات التي ترغب في إيقافها مؤقتًا. هذا سيوقف الروتين لمدة 5 ثوان.

read -p "Pause Time 5 seconds" -t 5
read -p "Continuing in 5 Seconds...." -t 5
echo "Continuing ...."
15
Jose H. Rosa

تشغيل عدة ينام والأوامر

sleep 5 && cd /var/www/html && git pull && sleep 3 && cd ..

سوف ينتظر هذا لمدة 5 ثوانٍ قبل تنفيذ البرنامج النصي الأول ، ثم سينام مرة أخرى لمدة 3 ثوانٍ قبل أن يغير الدليل مرة أخرى.

11
Robot Boy

read -r -p "Wait 5 seconds or press any key to continue immediately" -t 5 -n 1 -s

للمتابعة عند الضغط على أي زر واحد

4
Andrey

يمكنك جعلها تنتظر باستخدام $ RANDOM ، مولد رقم عشوائي افتراضي. في أدناه أنا أستخدم 240 ثانية. امل ان يساعد @

> WAIT_FOR_SECONDS=`/usr/bin/expr $RANDOM % 240` /bin/sleep
> $WAIT_FOR_SECONDS
0
Balaji Boggaram Ramanarayan