มีคำสั่ง Unix มาตรฐานที่ทำสิ่งที่คล้ายกับตัวอย่างของฉันด้านล่าง
$ <cmd here> 56
$ echo Return code was $?
Return code was 56
$
<cmd here>
ควรเป็นสิ่งที่สามารถ fork-execed และปล่อยให้ 56 เป็นรหัสทางออกเมื่อกระบวนการออก exit
และreturn
เปลือก builtins ไม่เหมาะสมสำหรับสิ่งที่ฉันกำลังมองหาเพราะพวกเขามีผลต่อการกล่าวอ้างเปลือกตัวเองด้วยการออกออกมาจากมัน <some cmd>
ควรเป็นสิ่งที่ฉันสามารถดำเนินการในบริบทที่ไม่ใช่เปลือก - เช่นเรียกจากสคริปต์ Python subprocess
ด้วย
เช่น/usr/bin/false
ออกจากทันทีด้วยรหัสส่งคืน 1 แต่ฉันต้องการควบคุมรหัสที่ส่งคืนนั้นอย่างแน่นอน ฉันสามารถบรรลุผลลัพธ์เดียวกันโดยเขียนสคริปต์ตัวคลุมของฉันเอง
$ cat my-wrapper-script.sh # i.e., <some cmd> = ./my-wrapper-script.sh
#!/usr/bin/bash
exit $1
$ ./my-wrapper-script.sh 56
$ echo $?
56
แต่ฉันหวังว่าจะมีคำสั่ง Unix มาตรฐานที่สามารถทำสิ่งนี้ให้ฉันได้
(exit 56)
ล่ะ
true
และfalse
บิวด์อินถ้าคุณต้องการส่งคืน 0 หรือ 1
exit
เป็นคนเดียวที่ฉันคิดได้ แต่มันมีแนวโน้มที่จะจบเชลล์ของคุณbash -c 'exit 56'
หรือbash -c "exit $1"
อาจทำงานให้คุณ