لقد وجدت فقط كيفية الانتظار لإدخال المستخدم. ومع ذلك ، أريد فقط التوقف مؤقتًا حتى لا يتعطل while true
الخاص بي.
جربت pause(1)
، لكنها تقول -bash: syntax error near unexpected token '1'
. كيف يمكن أن تتم؟
استخدم الأمر 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
في Python (تم وضع علامة أصلاً على Python) ، تحتاج إلى استيراد الوحدة الزمنية
import time
time.sleep(1)
أو
from time import sleep
sleep(1)
لسيناريو شل هو مجرد
sleep 1
الذي ينفذ الأمر sleep
. على سبيل المثال. /bin/sleep
وماذا عن:
read -p "Press enter to continue"
أدرك أنني متأخرة بعض الشيء مع ذلك ، ولكن يمكنك أيضًا الاتصال بالنوم وتمضية الوقت الضائع. على سبيل المثال ، إذا أردت الانتظار لمدة 3 ثوانٍ ، يمكنني القيام بما يلي:
/bin/sleep 3
ستبدو 4 ثوان كالتالي:
/bin/sleep 4
في نظام Mac OSX ، لا يستغرق السكون دقائق/إلخ ، بل يستغرق ثوانٍ فقط. لذلك لمدة دقيقتين ،
sleep 120
ضمن البرنامج النصي ، يمكنك إضافة ما يلي بين الإجراءات التي ترغب في إيقافها مؤقتًا. هذا سيوقف الروتين لمدة 5 ثوان.
read -p "Pause Time 5 seconds" -t 5
read -p "Continuing in 5 Seconds...." -t 5
echo "Continuing ...."
تشغيل عدة ينام والأوامر
sleep 5 && cd /var/www/html && git pull && sleep 3 && cd ..
سوف ينتظر هذا لمدة 5 ثوانٍ قبل تنفيذ البرنامج النصي الأول ، ثم سينام مرة أخرى لمدة 3 ثوانٍ قبل أن يغير الدليل مرة أخرى.
read -r -p "Wait 5 seconds or press any key to continue immediately" -t 5 -n 1 -s
للمتابعة عند الضغط على أي زر واحد
يمكنك جعلها تنتظر باستخدام $ RANDOM ، مولد رقم عشوائي افتراضي. في أدناه أنا أستخدم 240 ثانية. امل ان يساعد @
> WAIT_FOR_SECONDS=`/usr/bin/expr $RANDOM % 240` /bin/sleep
> $WAIT_FOR_SECONDS