ใช้เอาต์พุตของคำสั่งเป็นรหัสออก


6

สำหรับสคริปต์ Integration Integration ของฉันฉันต้องการตรวจสอบว่าสาขา git ไม่ได้ซิงค์กับสาขาหลัก ดังนั้นฉันใช้

git rev-list --left-right --count master...my-branch-name

มันจะส่งคืน sth ชอบ

1    3

(3 มุ่งหน้าก่อนอาจารย์ 1 หลัง)

เพิ่ม | cut -f1 จะให้ฉันหมายเลขแรกเท่านั้น (คอมมิชชันด้านหลังของมาสเตอร์)

ตอนนี้ฉันต้องการออกจากสคริปต์โดยใช้ตัวเลขนั้นเพราะ 0 คอมมิชชันด้านหลังเป็นความสำเร็จส่วนอีกคนควรให้ข้อผิดพลาด

ฉันจะทำสิ่งนั้นได้อย่างไร ฉันเหนื่อย

exit 'git rev-list --left-right --count master...my-branch-name | cut -f1'

แต่สิ่งนี้เพิ่มขึ้น

/ bin / bash: บรรทัด 66: exit: git rev-list - ซ้ายขวา - นับหลัก ... my-branch-name | cut -f1: ต้องใช้อาร์กิวเมนต์ตัวเลข

มีวิธีปฏิบัติที่ดีที่สุดสำหรับสิ่งนี้หรือไม่?

คำตอบ:


5

เพียงเปลี่ยนสายของคุณ:

exit 'git rev-list --left-right --count master...my-branch-name | cut -f1'

ไปที่:

exit `git rev-list --left-right --count master...my-branch-name | cut -f1`

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


4
ใช้ $(...) แทน backticks ง่ายกว่าที่จะเห็นความแตกต่าง
glenn jackman

อาจเป็นไปได้ว่าวิธีที่ฉันเขียนคือความเข้ากันได้ทางประวัติศาสตร์ของ $(...) วิธีใหม่กว่าและ "เข้ากันได้" ที่คาดคะเนได้มากกว่าระหว่างเชลล์ที่แตกต่างกัน แต่ทั้งคู่ควรทำงานโดยไม่มีปัญหาในการทุบตี
nKn

1
backticks ก็โอเคสำหรับทุบตี แต่ไม่ดีสำหรับมนุษย์ ฉันใช้เวลาหลายวินาทีกว่าจะพบความแตกต่างในคำตอบของคุณ
glenn jackman

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