ฉันพบวิธีที่จะรออินพุตของผู้ใช้เท่านั้น อย่างไรก็ตามฉันต้องการหยุดชั่วคราวเท่านั้นเพื่อที่while true
จะได้ไม่เกิดความผิดพลาดกับคอมพิวเตอร์ของฉัน
ฉันพยายามแต่มันบอกว่าpause(1)
-bash: syntax error near unexpected token '1'
จะทำอย่างไร?
ฉันพบวิธีที่จะรออินพุตของผู้ใช้เท่านั้น อย่างไรก็ตามฉันต้องการหยุดชั่วคราวเท่านั้นเพื่อที่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
thread.sleep
ฟังก์ชั่นในหลาย ๆ ภาษาโปรแกรม @Geremia
และสิ่งที่เกี่ยวกับ:
read -p "Press enter to continue"
PAUSE
ใน Python (คำถามเดิมถูกแท็ก Python) คุณต้องนำเข้าโมดูลเวลา
import time
time.sleep(1)
หรือ
from time import sleep
sleep(1)
สำหรับเชลล์สคริปต์นั้นเป็นเพียง
sleep 1
ซึ่งรันsleep
คำสั่ง เช่น./bin/sleep
python -c "import time; time.sleep(1)"
แทนsleep 1
:)
python -c "import time; time.sleep(0.8)"
แทน แต่เราต้องคำนึงถึงระยะเวลาในการเริ่มต้นของไพ ธ อน คุณต้องเรียกใช้สิ่งนี้: date +%N; python -c "import time; time.sleep(0)"; date +%N
เพื่อกำหนดว่าจะใช้ไพ ธ อนกี่นาโนวินาทีในการเริ่มต้น แต่นั่นยังรวมถึงค่าใช้จ่ายจากวันที่ทำงาน เรียกใช้สิ่งนี้date +%N; date +%N
เพื่อค้นหาค่าใช้จ่ายนั้น ค่าใช้จ่ายของไพ ธ อนในเครื่องของฉันใกล้เคียงกับ 0.14 วินาทีแล้ว time.sleep(0.86)
ดังนั้นผมจึงต้องการ
ฉันรู้ว่าฉันมาช้าไปหน่อยกับสิ่งนี้ แต่คุณสามารถเรียกการนอนหลับและผ่านช่วงเวลาที่พ้นไปได้เช่นถ้าฉันต้องการรอ 3 วินาทีฉันจะทำ:
/bin/sleep 3
4 วินาทีจะมีลักษณะเช่นนี้:
/bin/sleep 4
บน Mac OSX การนอนหลับไม่ใช้เวลาหลายนาที / ฯลฯ เพียงไม่กี่วินาที ดังนั้นสองนาที
sleep 120
เรียกใช้หลาย sleeps และคำสั่ง
sleep 5 && cd /var/www/html && git pull && sleep 3 && cd ..
การดำเนินการนี้จะรอ 5 วินาทีก่อนที่จะเรียกใช้สคริปต์แรกจากนั้นจะเข้าสู่โหมดสลีปอีก 3 วินาทีก่อนที่จะเปลี่ยนไดเรกทอรีอีกครั้ง
ภายในสคริปต์คุณสามารถเพิ่มสิ่งต่อไปนี้ระหว่างการดำเนินการที่คุณต้องการหยุดชั่วคราว สิ่งนี้จะหยุดกิจวัตรเป็นเวลา 5 วินาที
read -p "Pause Time 5 seconds" -t 5
read -p "Continuing in 5 Seconds...." -t 5
echo "Continuing ...."
-t 5
จะยกเลิกสคริปต์หลังจาก 5 วินาทีไม่ดำเนินการต่อไปอย่างน้อยตามหน้าคนนี้อ่าน
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
ใช้กับดักเพื่อหยุดและตรวจสอบบรรทัดคำสั่งก่อนรัน
trap 'tput setaf 1;tput bold;echo $BASH_COMMAND;read;tput init' DEBUG
กดปุ่มใดก็ได้เพื่อดำเนินการต่อ
ใช้กับ
set -x
เพื่อดีบักบรรทัดรับคำสั่ง
sleep
! (pause
,wait
หรือdelay
จะทำให้เข้าใจมากขึ้นและง่ายต่อการจดจำ)