Saya memiliki kerangka kerja yang ditulis dalam python, dan untuk tujuan pengujian saya pada dasarnya ingin melakukan subproses (alias panggilan shell) ... yang seharusnya kembali dengan RC! = 0. Saya mencoba memanggil beberapa executable yang tidak ada; atau untuk menjalankan "keluar 1"; tetapi untuk beberapa alasan diterjemahkan ke FileNotFoundError.
Jadi, apa lagi yang bisa saya lakukan untuk memicu kode kembali! = 0 (dengan cara "dapat diandalkan"; artinya perintah tidak boleh tiba-tiba mengembalikan 0 pada titik waktu mendatang).
Saya berpikir untuk "mencari" biner yang disebut exit, tetapi yah:
> /usr/bin/env exit
/usr/bin/env: exit: No such file or directory
command-line
bash
python
scripts
GhostCat
sumber
sumber
exit 1
adalah cara masa depan-bukti untuk pergi. FileNotFoundError harus disebabkan oleh sesuatu yang lain./bin/false
?Jawaban:
Jika Anda mencari perintah sistem yang selalu mengembalikan kode keluar non-nol, maka
/bin/false
sepertinya itu akan bekerja untuk Anda. Dariman false
:sumber
/bin/false 5; echo $?
5
) diabaikanAnda dapat membuat kode pengembalian baru dengan perintah
bash -c "exit RETURNCODE"
, menggantikan "RETURNCODE" dengan nomor apa pun. Perhatikan bahwa itu akan dipangkas menjadi integer 8bit unsigned (0 ... 255) oleh (RETURNCODE mod 256)Anda dapat memeriksa kode kembali dari perintah shell terakhir di dalam terminal (!) Dengan mengeksekusi
echo $?
. "$?" variabel berisi kode pengembalian terbaru dan "echo" mencetaknya ke output standar.sumber
exit RETURNCODE
(tanpabash -c
bagian)Setelah beberapa pengujian lagi, saya menemukan bahwa masalah saya bukan pada sisi "Linux".
Python memiliki modul shlex; yang harus digunakan untuk "membagi" string perintah. Ketika saya mengubah panggilan subproses saya untuk menggunakan output dari
shlex.split()
memanggil "bash exit 1" memberi saya apa yang saya butuhkan.sumber