डॉस के पॉज कमांड के बराबर बैश क्या है?


13

जारी रखने से पहले चेतावनी दिखाने के लिए मुझे शेल स्क्रिप्ट पर विराम की आवश्यकता है। उदाहरण के लिए, डॉस पर यह इस प्रकार है:

doit.bat:

[...]
echo 'Are you sure? Press Ctrl-C to abort, enter to continue.'
pause
[...]

मैं इसे बैश पर कैसे कर सकता हूं? पल के लिए एक नींद आदेश चाल करने के लिए लगता है और काफी सरल है, लेकिन वास्तव में यह विचार नहीं है:

doit.sh

[...]
echo 'Are you sure? Press Ctrl-C to abort.'
sleep 3
[...]

जवाबों:


10

की तर्ज पर कुछ

echo -n "prompt"  #'-n' means do not add \n to end of string
read              # No arg means dump next line of input

14
बैश में, यह छोटा किया जा सकता है read -p "prompt"। निर्मित शेल पर अधिक विवरण helpकमांड के साथ प्राप्त किया जा सकता है , जैसे help read
लेकेन्स्टाइन

@Lekensteyn - हालांकि यह एक नई अनुगामी के बिना है।
मैट एच

@MattH लाइक echo -nऔर printf। यदि आप Enter दबाते हैं, तो आपको एक नई लाइन मिलेगी।
लेकेन्स्टाइन

पढ़ने argumenst की आवश्यकता है - कि ubuntu के लिए काम करते 12.04 नहीं है
Ses

12.04.4 को @ @ का उपयोग करने bashकी कोई आवश्यकता नहीं है कि पढ़ने के पास एक तर्क है। उपयोग करना sh(जो अक्सर संगत मोड bashमें आह्वान करता shहै) readको एक तर्क की आवश्यकता होती है। आप अपनी स्क्रिप्ट शुरू करते हैं के साथ #!/bin/shआप बाद व्यवहार देखेंगे
हकल

2

read -p "Press any key to continue or CTRL-C to abort"मेरी स्क्रिप्ट्स में 14.04 के तहत ठीक काम करता है। जैसा कि @Lekensteyn ऊपर टिप्पणी में कहा गया है, ऐसा लगता है कि यह 12.04.4 के बाद से मामला है। 'मदद पढ़ें' पेज स्थिति:

-p prompt   output the string PROMPT without a trailing newline before
            attempting to read

1

मेरा पसंदीदा उपयोग डिफ़ॉल्ट टाइमआउट सेट करना है, ताकि स्क्रिप्ट अप्राप्य भी चल सके:

echo "Press any key to continue..."
read -n1 -t5 any_key

कहाँ पे:

  • -n1 किसी एक चरित्र को स्वीकार करने के लिए रीड बताता है
  • -t5 यह इनपुट के लिए अधिकतम 5 सेकंड प्रतीक्षा करने के लिए कहता है

मैं लगभग विशेष रूप से बैश के साथ CentOS के तहत काम करता हूं, इसलिए मैं अन्य लिनक्स वेरिएंट पर इस काम के लिए वाउच नहीं कर सकता, लेकिन चूंकि यह बैश है, इसलिए मैं इसे काम करने की उम्मीद करूंगा। अगर यह करता है तो मुझे कुछ जानना अच्छा लगेगा! :)


0

स्क्रिप्ट को बंद करने के लिए इंतजार करने वाले kill -STOP $$सिम स्क्रिप्ट से कॉल करने के लिए हैं : रुके हुए स्क्रिप्ट के बाद -Cont सिग्नल प्राप्त करने के बाद अपना काम जारी रखेगा।

#!/bin/bash
echo "$0 stopping now"
kill -STOP $$
echo "$0 continues its work"

CONTस्क्रिप्ट को सिग्नल कैसे भेजता है ?
डेविड फ़ॉस्टर 12

-2
echo "press enter to continue"
read unusedVariable
echo "running these 3 lines in .sh file, this echo will never be seen, unless you have a really slow computer"

इन 3 लाइनों को .sh फ़ाइल में रखें और इसे चलाएं


1
-1 यह क्या करना है और क्यों माना जाता है? अंतिम echoकमांड का आउटपुट क्यों नहीं दिखाई देगा और कंप्यूटर की गति के साथ इसका क्या संबंध है?
डेविड फ़ॉस्टर 01
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.