คำสั่งที่ต่อเนื่องกัน


14

ฉันถูกต้องหรือไม่ที่จะสมมติว่าเมื่อ;รวมสองคำสั่งในบรรทัด Bash จะรอจนกว่าคำสั่งแรกจะออกก่อนที่จะดำเนินการคำสั่งที่สองหรือไม่ และในทำนองเดียวกันในเชลล์สคริปต์ที่มีสองคำสั่งต่างกันในบรรทัดที่ต่างกัน Bash จะรอจนกว่าคำสั่งในบรรทัดแรกจะออกก่อนที่จะดำเนินการคำสั่งในบรรทัดที่สองหรือไม่

หากเป็นกรณีนี้มีวิธีดำเนินการสองคำสั่งในหนึ่งบรรทัดหรือในสคริปต์เพื่อให้คำสั่งที่สองไม่รอจนกว่าคำสั่งแรกจะเสร็จสิ้นหรือไม่

นอกจากนี้บรรทัดต่าง ๆ ในเชลล์สคริปต์เทียบเท่ากับบรรทัดที่แยกจากกันโดย;หรือ&&?


คำตอบ:


26

คุณถูกต้องคำสั่งในสคริปต์จะดำเนินการตามลำดับโดยค่าเริ่มต้น

คุณสามารถเรียกใช้คำสั่งในพื้นหลังโดยใช้คำสั่ง&(เครื่องหมายแอมเปอร์แซนด์เดียว)

คำสั่งในบรรทัดที่แยกต่างหากจะเทียบเท่ากับคำสั่งที่เข้าร่วม;โดยค่าเริ่มต้น หากคุณบอกให้เชลล์ยกเลิกรหัสที่ไม่เป็นศูนย์ ( set -e) แล้วสคริปต์จะทำงานราวกับว่าคำสั่งทั้งหมดถูกรวมเข้าด้วย&&กัน


2

เพื่อตอบคำถามที่สองของคุณคุณสามารถใช้&เพื่อเรียกใช้คำสั่งในพื้นหลังและดำเนินการต่อกับสคริปต์โดยไม่ต้องรอให้เสร็จ

commandA & commandB

หากคุณรันสิ่งนี้ที่เทอร์มินัลเชิงโต้ตอบ (แทนที่จะเป็นสคริปต์) คุณสามารถใช้fgเพื่อทำให้คำสั่งแบ็กกราวน์กลับเข้ามาในโฟกัสหรือjobsเพื่อดูรายการงานพื้นหลัง

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