ส่งงานไปที่พื้นหลังใน“ ถ้า”


10

ทำไมนี้

if true; then sleep 3 &; fi
bash: syntax error near unexpected token `;'

ฉันต้องการวิ่ง

sleep 3

ในพื้นหลังเพื่อให้คำสั่ง ["sleep 3" เป็นเพียงตัวอย่าง] จะทำงานในสไตล์ "paralell" ดังนั้นจึงเสร็จเร็วขึ้น แต่ฉันได้รับสิ่งนี้:

bash: syntax error near unexpected token `;'

ข้อความผิดพลาด. ทำไม? ทำไมฉันไม่สามารถส่งงานไปที่พื้นหลังได้?


คุณคิดว่าคุณกำลังทดสอบอะไรกับifข้อความนี้?
เกล็นแจ็

คำตอบ:


6

ดูเหมือนว่าคุณไม่จำเป็นต้องแยกคำสั่งในกรณีนั้น ( &แยกตัวมันเองออก)

ตัวอย่างเช่น.

$> if true; then (sleep 3; echo ok) &  fi
[1] 14224
$> ok

8

เป็นเพราะ&ตัวคั่นคำสั่งอยู่แล้วดังนั้นคุณไม่ควรใส่;หลังจากนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.