Czy istnieje standardowe polecenie Unix, które robi coś podobnego do mojego przykładu poniżej?
$ <cmd here> 56
$ echo Return code was $?
Return code was 56
$
<cmd here>
powinno być czymś, co można wykonać za pomocą wideł, i pozostawia 56 jako kod wyjścia, gdy proces się kończy. Te exit
i return
powłoki builtins nie nadają się do tego, co szukam, ponieważ wpływają one na skorupę powołując się poprzez wychodzenia z niego. <some cmd>
powinno być czymś, co mogę wykonać w kontekście innym niż shell - np. wywołując ze skryptu Python za pomocą subprocess
.
Np. /usr/bin/false
Zawsze wychodzi natychmiast z kodem powrotu 1, ale chciałbym dokładnie kontrolować, co to jest kod powrotu. Mogę osiągnąć te same wyniki, pisząc własny skrypt opakowania
$ 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
ale mam nadzieję, że istnieje standardowa komenda Uniksa, która może to dla mnie zrobić.
(exit 56)
?
true
i false
wbudowane, jeśli chcesz zwrócić 0 lub 1.
exit
jest jedynym, o którym mogę myśleć, ale ma tendencję do kończenia twojej powłoki.bash -c 'exit 56'
lubbash -c "exit $1"
może pracować dla ciebie.