ฉันสงสัยว่าฉันจะใช้หลายคำสั่งผ่าน shell script ได้อย่างไร
ตัวอย่างเช่นเพียงลองใช้ฉันต้องการเชื่อมต่อ .desktop กับ. sh ที่จะเรียกใช้รหัสอัปเดตทั้งหมดดังนั้นฉันจึงไม่ต้องพิมพ์ออกมา ฉันรู้วิธีรันคำสั่งเดียวผ่าน. sh ไม่ใช่หลายคำสั่ง
อย่างไรก็ตาม?
ฉันสงสัยว่าฉันจะใช้หลายคำสั่งผ่าน shell script ได้อย่างไร
ตัวอย่างเช่นเพียงลองใช้ฉันต้องการเชื่อมต่อ .desktop กับ. sh ที่จะเรียกใช้รหัสอัปเดตทั้งหมดดังนั้นฉันจึงไม่ต้องพิมพ์ออกมา ฉันรู้วิธีรันคำสั่งเดียวผ่าน. sh ไม่ใช่หลายคำสั่ง
อย่างไรก็ตาม?
คำตอบ:
ง่ายมาก - คุณต้องแยกคำสั่ง เช่นนี้
#!/bin/bash
sudo apt-get update
sudo apt-get upgrade
จะอัปเดตรายการแพคเกจแล้วแพ็คเกจ ความเป็นไปได้อีกอย่างคือสิ่งนี้(น่าจะดีกว่าเนื่องจาก && จะอนุญาตเฉพาะupgrade
คำสั่งให้ทำงานหากการupdate
ออกสำเร็จ) :
#!/bin/bash
sudo apt-get update && sudo apt-get upgrade
สิ่งนี้ควรรันคำสั่งเพื่ออัพเดตรายการแพ็กเกจจากนั้นแพ็กเกจเอง จะต้องมีการบันทึกลงในไฟล์ข้อความ (เช่นupdatescript
ในโฮมไดเร็กตอรี่) จากนั้นคุณสามารถทำให้มันใช้งานได้โดยการเรียกใช้:
chmod +x ./updatescript
หรือโดยการคลิกขวาที่ไฟล์และทำให้มันสามารถทำงานได้ในคุณสมบัติ:
และรันด้วยสิ่งนี้ในเทอร์มินัล:
./updatescript
หมายเหตุ (s):
มีตัวเลือก ( -y
) พร้อมใช้งานที่สามารถใช้กับupgrade
คำสั่งได้ดังนั้นจึงไม่แสดงพร้อมท์ก่อนอัพเกรดแพ็คเกจ เป็นความคิดที่ดีที่จะตรวจสอบสิ่งที่apt-get
กำลังทำอยู่ก่อนที่จะทำการอัพเกรดแพ็คเกจเนื่องจากอาจ / จะทำบางสิ่งที่โง่หรือสิ่งที่คุณไม่ต้องการ man apt-get
ข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกเช่นนี้สามารถพบได้โดยการทำงาน
นอกจากนี้ยังหมายความว่าเป็นการดียิ่งกว่าที่จะใช้เทอร์มินัลเพื่อเรียกใช้สคริปต์เนื่องจากคุณสามารถตรวจสอบสิ่งที่กำลังอัปเดตแล้วเรียกใช้ หากคุณต้องการวิธี GUI ในการเรียกใช้การอัปเดตให้ใช้ศูนย์ซอฟต์แวร์ตามที่เป็นอยู่
เพียงเพิ่มคะแนนไปยังคำตอบที่ดีเยี่ยมโดย @Wilf
คุณสามารถรันคำสั่งเป็นแบบ Paralell ได้หากคุณต้องการด้วยเหตุผลใดก็ตามตัวอย่างเช่นautostart
สคริปต์สำหรับ OpenBox อาจมีลักษณะเช่นนี้:
#!/bin/bash
nitrogen --restore &
tint2 &
tilda
สิ่งนี้จะตั้งค่าภาพพื้นหลังโดยใช้nitrogen
เริ่มแผงควบคุมtint2
และเริ่มคอนโซลดร็อปดาวน์สไตล์ Quake3 tilda
ทั้งหมดพร้อมกัน สิ่งนี้มีประโยชน์หากคุณไม่ต้องการให้โปรแกรมเสร็จสิ้นก่อนที่จะเรียกใช้งานโปรแกรมถัดไป ไม่ใช่กรณีapt-get update
และapt-get upgrade
แม้ว่า!
สังเกตุ&
เครื่องหมายที่ท้ายแต่ละบรรทัด สิ่งนี้จะทำให้เชลล์แยกกระบวนการนั้นเป็นพื้นหลังและดำเนินการต่อ สังเกตว่ามันแตกต่างจาก&&
ซึ่งเป็นand
สัญญาณโดยทั่วไปcommand_1 && command_2
จะดำเนินการcommand_1
และถ้าออกจากความสำเร็จเพียงแค่เรียกใช้แล้วcommand_2
ในขณะที่command_1 & command_2
จะเริ่มต้นที่สองทันทีหลังจากครั้งแรก
นอกจากนี้คุณยังสามารถสแต็กคำสั่งเพื่อให้พวกเขาดำเนินการตามลำดับเช่น:
#!/bin/bash
apt-get update
apt-get upgrade
นี้จะทำงานapt-get upgrade
หลังจากที่apt-get update
มีการดำเนินการเสร็จสิ้นแต่ไม่คำนึงถึงผลที่ตามมา ดังนั้นแม้ว่าการอัปเดตจะจบลงด้วยข้อผิดพลาดของเครือข่ายการอัปเกรดจะยังคงทำงานอยู่
นอกจากนี้คุณยังสามารถทำเช่นนี้ในหนึ่งบรรทัดโดยใช้เครื่องหมาย:;
apt-get update ; apt-get upgrade
อีกครั้งโซลูชันนี้ไม่เหมาะสำหรับคำสั่งเฉพาะเหล่านี้ แต่อาจมีประโยชน์ในสถานการณ์อื่น ๆ
หนึ่งจุดสุดท้ายอย่างรวดเร็วคุณยังสามารถแยกบรรทัดที่มี&&
เช่น:
command_1 &&
command_2
command_1 && command_2
นี้จะเป็นเช่นเดียวกับ