Bukankah lebih baik jika 'tes' memiliki opsi untuk menampilkan nilai segera? Hanya pilihannya. Itu yang kita butuhkan.
Todd Walton
Jawaban:
15
Anda mendapatkan 0 atau 1. Di kode akses.
bash-4.2$ test 4-lt 6
bash-4.2$ echo $?0
bash-4.2$ test 4-gt 6
bash-4.2$ echo $?1
Pembaruan : Untuk menyimpan kode akses untuk digunakan nanti, tetapkan saja ke variabel:
bash-4.2$ test 4-lt 6
bash-4.2$ first=$?
bash-4.2$ test 4-gt 6
bash-4.2$ second=$?
bash-4.2$ echo "first test gave $first and the second $second"
first test gave 0 and the second 1
Tidak. Hanya output yang bisa diarahkan. Bagaimanapun, biasanya tidak perlu untuk itu. Untuk menyimpannya untuk digunakan nanti, cukup tetapkan ke variabel. Atau beri tahu kami apa sebenarnya niat Anda dengan nilai itu.
manatwork
2
Kode keluar ditempatkan ke dalam $?variabel - setidaknya sampai ditimpa oleh perintah berikutnya yang Anda jalankan.
Shadur
1
PS: Anda dapat menggunakan yang $PIPESTATUSarray yang untuk mendapatkan hasil beberapa perintah dalam pipa. $?akan dengan menjadi hasil dari terakhir perintah dalam pipa jika yang pipefailpilihan adalah off (default).
l0b0
@indieman, jika yang Anda butuhkan adalah melakukan sesuatu yang lain berdasarkan status keluar, Anda bahkan tidak perlu menyimpannya — cukup gunakanif test 4 -lt 6; then echo test succeeeded; else echo test failed; fi
Wildcard
5
Cara lain adalah
test 4-lt 6&& echo 1|| echo 0
Tapi hati-hati dalam hal itu. Jika testpengembalian berhasil dan echo 1gagal echo 0akan dieksekusi.
Jika Anda ingin hasil perbandingan standar keluar dan bukan kode keluar, Anda dapat menggunakan expr(1)perintah:
$ expr 4'<='61
Dua hal yang perlu diperhatikan:
Anda mungkin akan perlu mengutip operator karena banyak dari mereka bertentangan dengan shell metacharacters
nilai output adalah kebalikan dari kode pengembalian untuk test. testmengembalikan 0 untuk true (yang merupakan standar untuk kode keluar), tetapi exprmencetak 1 untuk true.
Jawaban:
Anda mendapatkan 0 atau 1. Di kode akses.
Pembaruan : Untuk menyimpan kode akses untuk digunakan nanti, tetapkan saja ke variabel:
sumber
$?
variabel - setidaknya sampai ditimpa oleh perintah berikutnya yang Anda jalankan.$PIPESTATUS
array yang untuk mendapatkan hasil beberapa perintah dalam pipa.$?
akan dengan menjadi hasil dari terakhir perintah dalam pipa jika yangpipefail
pilihan adalah off (default).if test 4 -lt 6; then echo test succeeeded; else echo test failed; fi
Cara lain adalah
Tapi hati-hati dalam hal itu. Jika
test
pengembalian berhasil danecho 1
gagalecho 0
akan dieksekusi.sumber
Jika Anda ingin hasil perbandingan standar keluar dan bukan kode keluar, Anda dapat menggunakan
expr(1)
perintah:Dua hal yang perlu diperhatikan:
test
.test
mengembalikan 0 untuk true (yang merupakan standar untuk kode keluar), tetapiexpr
mencetak 1 untuk true.sumber
test
builtin shell, yang jauh lebih cepat (sekitar 50 kali pada mesin saya) daripadatest
danexpr
executable dari paket coreutils .Anda dapat mengetikkan perintah berikut:
sumber