วิธีเรียกใช้งาน Shell Commands
จาก Ruby อย่างมีประสิทธิภาพ
การเรียกใช้งานคำสั่งเชลล์จากภายในโปรแกรม Ruby สามารถเพิ่มความสามารถให้กับโปรแกรมได้อย่างมาก ไม่ว่าคุณจะต้องการทำงานอัตโนมัติ ประมวลผลข้อมูล หรือจัดการไฟล์ การรวมคำสั่งเชลล์เป็นวิธีที่นักพัฒนาหลายคนพบว่ามีประโยชน์ ในคู่มือนี้เราจะเจาะลึกถึง วิธีการเรียกใช้งานคำสั่งเชลล์จาก Ruby โดยให้ตัวอย่างที่ใช้ได้จริงและข้อมูลเชิงลึกเกี่ยวกับวิธีการทำงานทั้งหมด
เข้าใจพื้นฐาน
เมื่อคุณเรียกใช้งานคำสั่งเชลล์ใน Ruby มันจะเรียก /bin/sh
เป็นหลัก ซึ่งหมายความว่าฟังก์ชันบางอย่างของ Bash อาจไม่ทำงานตามที่คาดหวัง มันเป็นสิ่งสำคัญที่จะต้องจดจำเมื่อคุณสร้างสคริปต์ Ruby ของคุณ เนื่องจากไวยากรณ์บางอย่างที่ใช้ใน Bash อาจไม่ทำงานอย่างถูกต้องในเชลล์ที่ใช้เป็นค่าเริ่มต้น
วิธีการเรียกใช้งานคำสั่งเชลล์ใน Ruby
1. ใช้ Backticks (`)
วิธีที่ง่ายที่สุดในการเรียกใช้งานคำสั่งเชลล์คือการใช้ backticks วิธีการนี้จะคืนค่าข้อมูลออกมาตามปกติของคำสั่ง
value = `echo 'hi'`
นี่คือวิธีการใช้คำสั่งที่เก็บไว้ในสตริง:
cmd = "echo 'hi'"
value = `#{cmd}`
เอกสาร
สำหรับข้อมูลเพิ่มเติม ตรวจสอบ เอกสาร Ruby.
2. ไวยากรณ์ในตัว %x(cmd)
อีกวิธีหนึ่งในการเรียกใช้งานคำสั่งเชลล์คือการใช้ไวยากรณ์ในตัว %x()
วิธีการนี้มีความยืดหยุ่นมาก เพราะอนุญาตให้ใช้ตัวแบ่งที่กำหนดเองได้
value = %x( echo 'hi' )
value = %x[ #{cmd} ]
เอกสาร
เรียนรู้เพิ่มเติมเกี่ยวกับไวยากรณ์นี้ใน เอกสารไLiterals ของ Ruby.
3. ใช้ Kernel#system
วิธี system
จะทำการเรียกใช้งานคำสั่งใน subshell โดยคืนค่า true
สำหรับผลสำเร็จ และ false
หากไม่สำเร็จ
wasGood = system( "echo 'hi'" )
wasGood = system( cmd )
เอกสาร
สำหรับข้อมูลรายละเอียดเพิ่มเติม โปรดดูที่ เอกสารวิธี system.
4. ใช้ Kernel#exec
หากคุณต้องการแทนที่กระบวนการปัจจุบันด้วยกระบวนการใหม่ ให้ใช้ exec
วิธีการนี้จะไม่ส่งค่าคืนเนื่องจากกระบวนการปัจจุบันจะถูกแทนที่
exec( "echo 'hi'" )
exec( cmd ) # หมายเหตุ: บรรทัดนี้จะไม่มีวันถูกดำเนินการถึงเพราะบรรทัดด้านบน
เอกสาร
ข้อมูลเพิ่มเติมเกี่ยวกับ exec
สามารถดูได้ ที่นี่.
เข้าใจค่าคืนและสถานะกระบวนการ
หลังจากเรียกใช้งานคำสั่งเชลล์ คุณอาจต้องการตรวจสอบสถานะการดำเนินการ สถานะกระบวนการสามารถเข้าถึงได้โดยใช้ $?
ซึ่งมีประสิทธิภาพเหมือนกับ $CHILD_STATUS
คุณสามารถตรวจสอบสถานะการออกและ ID ของกระบวนการได้ดังนี้:
$?.exitstatus
แหล่งข้อมูลเพิ่มเติม
สำหรับการอ่านและสำรวจเพิ่มเติมเกี่ยวกับการเรียกใช้งานคำสั่งเชลล์ใน Ruby ขอแนะนำให้ตรวจสอบบทความเหล่านี้:
- บล็อก ElcTech เกี่ยวกับการเรียกใช้งานคำสั่งใน Command Line
- บล็อก JayFields เกี่ยวกับวิธี Kernel
- คู่มือของ Nate Murray เกี่ยวกับคำสั่งเชลล์ใน Ruby
สรุป
การเรียกใช้งานคำสั่งเชลล์ใน Ruby เปิดโอกาสมากมายในการปรับปรุงสคริปต์ผ่านการทำงานอัตโนมัติและการจัดการข้อมูล การเข้าใจวิธีการต่าง ๆ ที่มีอยู่ช่วยให้นักพัฒนาสามารถเลือกวิธีที่เหมาะสมที่สุดสำหรับความต้องการของตนได้ ทดลองใช้คำสั่งเหล่านี้และเพลิดเพลินกับความยืดหยุ่นที่พวกเขามอบให้ในแอพพลิเคชัน Ruby ของคุณ!