চালিয়ে যাওয়ার আগে আমি কীভাবে আমার শেল স্ক্রিপ্টটি এক সেকেন্ডের জন্য থামিয়ে দেব?


697

ব্যবহারকারীর ইনপুটটির জন্য কীভাবে অপেক্ষা করতে হবে তা আমি কেবল খুঁজে পেয়েছি। তবে আমি কেবল বিরতি দিতে চাই যাতে while trueআমার কম্পিউটারটি ক্র্যাশ না হয়।

আমি চেষ্টা করেছি pause(1), কিন্তু এটা বলে -bash: syntax error near unexpected token '1'। এটা কিভাবে করা যাবে?

উত্তর:


1225

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


11
আমি সবসময় এটি ভুলে যাই sleep! ( pause,, waitবা delayআরও জ্ঞান তৈরি করতে এবং মনে রাখা সহজ হবে))
জেরেমিয়া

46
এটি ম্যাক ওএস এক্সে মনে হচ্ছে, এর এস, মি, এইচ এবং ডি এর কোনও প্রভাব নেই। আপনাকে অবশ্যই সময়টি সেকেন্ডে নির্দিষ্ট করতে হবে।
এআই স্থপতি 15

6
আমি মনে করি নামকরণটি হ'ল কারণ আমাদের thread.sleepঅনেক প্রোগ্রামিং ভাষায় @ জেরেমিয়া
আমিন_ মমজ

87

এবং কি সম্পর্কে:

read -p "Press enter to continue"

35
প্রকৃতপক্ষে, এটি আমার প্রশ্নের উত্তর দিয়েছে , যদিও এটি ওপিটির উত্তর দেয় না।
জেসি চিশলম

9
এটি এই পোস্টের সাথে কোন সম্পর্ক নেই।
মুরতাধা এস

6
@ মুরতাদলসবাবাগ, তবে গুগল ইনডেক্সিংয়ের সাথে অনেক কিছু করার আছে :) বিটিডব্লিউ, আমাকেও সাহায্য করেছেন।
আইউলিয়ান ওনোফ্রেই

পড়ুন -p "চালিয়ে যাওয়ার জন্য এন্টার টিপুন" -t 1 টি 1 সেকেন্ডের জন্য বিরতি দেওয়া উচিত
এসজেবি

@ জেসি চিশলম আমার ধারণা, লোকেরা পাওয়ারশেল / সেন্টিমিটারের সমান বাশ খুঁজছেনPAUSE
রোভিকো

66

পাইথনে (প্রশ্নটি মূলত পাইথন ট্যাগ করেছিল) আপনাকে সময় মডিউলটি আমদানি করতে হবে

import time
time.sleep(1)

অথবা

from time import sleep
sleep(1)

শেল স্ক্রিপ্ট জন্য ঠিক

sleep 1

যা sleepকমান্ড কার্যকর করে। যেমন।/bin/sleep


5
হ্যাঁ, এটিও বলে, এটি অন্যটি প্রথম ছিল, এবং এটির একটি চমৎকার উদাহরণ রয়েছে :) তবে +1!

3
সুতরাং এটি করার সঠিক উপায় না হয়েও আপনি বাশের সাথে অজগর উত্তরটি একত্রিত করতে পারেন :) এর python -c "import time; time.sleep(1)"পরিবর্তে sleep 1:)
বেরি এম।

2
@BerryM। - আমি যখন এটি চেষ্টা করি তখন প্রায় 1.2 সেকেন্ড লাগে। পাইথন তাত্ক্ষণিকভাবে শুরু হয় না - আপনার এটির জন্য অ্যাকাউন্ট দরকার। python -c "import time; time.sleep(0.8)"পরিবর্তে এটি তৈরি করুন। তবে তারপরে পাইথন স্টার্টআপটি আসলে কতক্ষণ সময় নেয় তা নির্ধারণ করা দরকার to আপনার এটি চালানো দরকার: date +%N; python -c "import time; time.sleep(0)"; date +%Nপাইথনটি শুরু করতে কত ন্যানোসেকেন্ডগুলি নিচ্ছে তা নির্ধারণ করতে। তবে এর মধ্যে চলমান তারিখ থেকে কিছু ওভারহেড অন্তর্ভুক্ত রয়েছে। date +%N; date +%Nযে ওভারহেড সন্ধান করতে এটি চালান । আমার মেশিনে পাইথনের ওভারহেডটি আসলে 0.14 সেকেন্ডের কাছাকাছি ছিল। তাই আমি চাই time.sleep(0.86)
আর্টঅফ ওয়ারফেয়ার

এটা ঠিক যে, আপনি কখনই পাবেন যদিও ঠিক 1000ms, এমনকি যে ভালো নয়।
বেরি এম

সাধারণত স্পেকটি হ'ল কমপক্ষে প্রদত্ত পরিমাণ, যা সাধারণত ঘুমের উদ্দেশ্য অনুসারে থাকে।
মার্লিন পিয়ার্স

40

আমি বুঝতে পেরেছিলাম যে আমি এই সাথে কিছুটা দেরি করেছি, তবে আপনি ঘুমকে কল করতে এবং বিরক্তিকর সময়টিও পার করতে পারেন For উদাহরণস্বরূপ, যদি আমি 3 সেকেন্ড অপেক্ষা করতে চাই তবে আমি এটি করতে পারি:

/bin/sleep 3

4 সেকেন্ড এর মত দেখতে হবে:

/bin/sleep 4

5
কেবল এটাকেই হোঁচট খেয়েছে, কারণ প্রায় এক বছর আগে পাগল হওয়া শীর্ষস্থানীয় ভোটের উত্তর, @ রিন্ডলকুপারের, অনেকগুলি পয়েন্ট রয়েছে - 59x রয়েছে এবং আরও গভীরতর হয়েছে, এবং এটি এখনও সাম্প্রতিক হয়ে কেবল তার উপরে প্রদর্শিত হয়েছে।
এইডো

2
@ আইডানএডওয়ার্ডস যখন আমি "ভোট" দ্বারা বাছাই না করা পর্যন্ত এটি আমার পক্ষে শীর্ষ উত্তর ছিল (যা পূর্বনির্ধারিত - আমি কীভাবে "সক্রিয়" হিসাবে সেট হয়ে গেলাম তা অবাক করে দিয়েছি?)। এটি "ভোট" এ সেট করা যদিও এটি স্থির করে। রহস্যময়।
খ্রিস্টানবন্ডি

1
@ স্ট্যাকওভারফ্লো - আপনার ছেলেরা কীভাবে কাজ করে তা পরিবর্তন করা উচিত ... শীর্ষে ভোট দেওয়া সর্বদা প্রথমে রাখুন!
দেিয়ান

3
"এটি কারণ শীর্ষ-ভোট দেওয়া উত্তর ... এখনও সাম্প্রতিক হয়ে কেবল তার উপরে প্রদর্শিত হয়েছে" - উহহ, না, এই উত্তরের খারাপ বিষয়বস্তুর সাথে সম্পর্কিত নয় এমন ক্ষুদ্র কারণগুলির জন্য কারও উত্তর দেওয়া উচিত নয়।
নিকোলাস পিটারসন

35

ম্যাক ওএসএক্সে ঘুম কয়েক মিনিট / ইত্যাদি সময় নেয় না, কেবল কয়েক সেকেন্ড। সুতরাং দুই মিনিটের জন্য,

sleep 120

27

একাধিক ঘুম এবং কমান্ড চালান

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

এটি প্রথম স্ক্রিপ্টটি কার্যকর করার আগে 5 সেকেন্ড অপেক্ষা করবে, তারপরে ডিরেক্টরিটি আবার পরিবর্তন করার আগে 3 সেকেন্ডের জন্য আবার ঘুমাবে।


4
+1 ... যদি আপনি ঘুমের পরে যদি একটি অ্যাম্পারস্যান্ড ব্যবহার করেন তবে এটি ঘুমকে তার নিজস্ব থ্রেডে প্রেরণ করে তাৎক্ষণিকভাবে পরবর্তী ক্রিয়া শুরু করে (যেমন ঘুম পরবর্তী ক্রিয়ায় দেরি করে না)
জয় মার্ম

18

স্ক্রিপ্টের মধ্যে আপনি বিরতি দিতে চান এমন ক্রিয়াগুলির মধ্যে নিম্নলিখিতটি যুক্ত করতে পারেন। এটি রুটিনটি 5 সেকেন্ডের জন্য বিরতি দেবে।

read -p "Pause Time 5 seconds" -t 5
read -p "Continuing in 5 Seconds...." -t 5
echo "Continuing ...."

এই অভ্যাস আসলে কাজ করে, এটা কি? আমি মনে করি যে -t 5এটি 5 সেকেন্ড পরে স্ক্রিপ্টটি বাতিল করে দেবে, কমপক্ষে এই ম্যান পেজ অনুসারে পড়তে হবে
ব্র্যাড পার্কস

@ ব্র্যাডপার্কস হ্যাঁ এটি ঠিক তেমন ক্ষেত্রে কাজ করবে: মূল @ জোস-আইপ্যাড: cat # বিড়াল রিডেস্ট.ব্যাশ #! / বিন / বাশ প্রতিধ্বনি "এখানে" পড়ুন -p "বিরতি সময় 5 সেকেন্ড" -t 5 পঠন -p "চালিয়ে যাচ্ছেন 5 সেকেন্ড .... "-t 5 প্রতিধ্বনি" অবিরত .... "প্রতিধ্বনি" সেখানে "রুট @ জোসেস-আইপ্যাড: cat # বিড়াল পুনর্বার .... সেখানে
জোসে এইচ রোজা

হুমম .... আমার মনে হয় আপনি ঠিক বলেছেন! আমি ভেবেছিলাম আমি এটি চেষ্টা করেছি তবে আমি এটি আবার চেষ্টা করেছি এবং এটি বিজ্ঞাপন হিসাবে কাজ করে। ধন্যবাদ!
ব্র্যাড পার্কস

5

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

আপনি যখন কোনও একটি বোতাম টিপেন তখন চালিয়ে যেতে


7
যদিও এই কোড স্নিপেট একটি সমাধান সহ সমাধান হতে পারে, সত্যিই আপনার পোস্টের গুণমান উন্নত করতে সহায়তা করে। মনে রাখবেন যে আপনি ভবিষ্যতে পাঠকদের জন্য প্রশ্নের উত্তর দিচ্ছেন, এবং সেই লোকেরা আপনার কোড পরামর্শের কারণগুলি জানেন না।
শান্তিপ্রকাশ

1
এই উত্তরটি কেবলমাত্র একটি কোড মন্তব্য। এটি প্রদত্ত কোডটি ব্যাখ্যা করার চেষ্টা করে না। আমি মনে করি যে পোস্টারটি এই প্রশ্নের ভুল ব্যাখ্যা করে
বলেছিল

2

আপনি এটি ডিফল্ট এলোমেলো সংখ্যা জেনারেটর ND RANDOM ব্যবহার করে অপেক্ষা করতে পারেন। নীচে আমি 240 সেকেন্ড ব্যবহার করছি। আশা করি এইটি কাজ করবে @

> WAIT_FOR_SECONDS=`/usr/bin/expr $RANDOM % 240` /bin/sleep
> $WAIT_FOR_SECONDS

1

বিরতিতে ট্র্যাপ ব্যবহার করুন এবং চালানোর আগে কমান্ড লাইনটি পরীক্ষা করুন

trap 'tput setaf 1;tput bold;echo $BASH_COMMAND;read;tput init' DEBUG

চালু রাখবার জন্য যেকোনো বোতাম চাপুন

set -xকমান্ড লাইন ডিবাগ করতে ব্যবহার করুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.