Có một lệnh Unix tiêu chuẩn thực hiện một cái gì đó tương tự như ví dụ của tôi dưới đây không
$ <cmd here> 56
$ echo Return code was $?
Return code was 56
$
<cmd here>
phải là một cái gì đó có thể được thực thi rẽ nhánh và để lại 56 làm mã thoát khi quá trình thoát. Các nội trang exit
và return
shell không phù hợp với những gì tôi đang tìm kiếm vì chúng ảnh hưởng đến chính vỏ gọi bằng cách thoát ra khỏi nó. <some cmd>
phải là một cái gì đó mà tôi có thể thực thi trong các bối cảnh không có vỏ - ví dụ, gọi từ một kịch bản Python với subprocess
.
Ví dụ: /usr/bin/false
luôn thoát ngay lập tức với mã trả về 1, nhưng tôi muốn kiểm soát chính xác mã trả về đó là gì. Tôi có thể đạt được kết quả tương tự bằng cách viết kịch bản trình bao bọc của riêng tôi
$ 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
nhưng tôi hy vọng sẽ tồn tại một lệnh Unix tiêu chuẩn có thể làm điều này cho tôi.
(exit 56)
?
true
và tích false
hợp sẵn nếu bạn cần trả về 0 hoặc 1.
exit
là người duy nhất tôi có thể nghĩ ra, nhưng nó có xu hướng kết thúc vỏ của bạn.bash -c 'exit 56'
hoặcbash -c "exit $1"
có thể làm việc cho bạn.