Dalam kebanyakan kasus, [
shell adalah builtin dan setara dengan test
. Namun, seperti test
, itu juga ada sebagai executable mandiri: itu yang /bin/[
Anda lihat. Anda dapat menguji ini dengan type -a [
(pada sistem Arch Linux, berjalan bash
):
$ type -a [
[ is a shell builtin
[ is /bin/[
Jadi, pada sistem saya, saya punya dua [
: builtin shell saya dan executable di /bin
. Yang dapat dieksekusi didokumentasikan dalam man test
:
TEST(1) User Commands TEST(1)
NAME
test - check file types and compare values
SYNOPSIS
test EXPRESSION
test
[ EXPRESSION ]
[ ]
[ OPTION
DESCRIPTION
Exit with the status determined by EXPRESSION.
[ ... ]
Seperti yang Anda lihat dalam kutipan halaman manual yang dikutip di atas, test
dan [
setara. The /bin/[
dan /bin/test
perintah yang ditentukan oleh POSIX yang mengapa Anda akan menemukan mereka meskipun fakta bahwa banyak kerang juga menyediakan mereka sebagai builtin. Kehadiran mereka memastikan bahwa konstruksi seperti:
[ "$var" -gt 10 ] && echo yes
akan berfungsi bahkan jika shell yang menjalankannya tidak memiliki [
builtin. Misalnya, di tcsh
:
> which [
/sbin/[
> set var = 11
> [ "$var" -gt 10 ] && echo yes
yes
[
builtin hanyalah shell yang pembuatnya memutuskan untuk tidak menambahkannya.tcsh
tidak memiliki sebuah[
builtin misalnya.bash
hanya satu dari banyak program (cangkang) yang dirancang untuk melakukan pekerjaan serupa. Bash adalah salah satu sistem yang paling populer tetapi banyak kapal dengan shell default yang berbeda. Beberapa yang lebih dikenal adalahsh
,bash
,zsh
,dash
,ksh
,tcsh
,csh
danfish
. Anda dapat melihat yang tersedia di sistem Anda dengancat /etc/shells
dan sebagian daftar di sini .sh
adalahdash
tetapi saya pikir sistem penyelamatan/bin/sh
tidak menggunakan busybox. Apakah kamu yakinItu digunakan untuk pengujian kondisi dalam skrip shell. Nama lain dari program ini adalah
test
:Itu terlihat seperti tata bahasa shell tetapi tidak. Biasanya
[
shell dibangun tetapi mungkin sebagai fallback itu ada sebagai perintah eksternal.Lihat blok "EKSPRESI KONDISIONAL" di
man bash
.sumber
[
adalah perintah yang sama dengantest
. Pada beberapa sistem * nix, satu hanyalah tautan ke lainnya. Misalnya, jika Anda menjalankan:Anda akan melihat output yang sama.
Sebagian besar sh-shells / posix-shells termasuk builtin
[
dantest
perintah. Hal yang sama berlaku untukecho
. Ada banyak/bin/echo
perintah dan builtin di sebagian besar shell. Itulah alasan mengapa terkadang Anda merasa bahwa, misalnya,echo
tidak bekerja dengan cara yang sama pada sistem yang berbeda.test
atau[
hanya mengembalikan kode keluar0
atau1
. Jika tes berhasil, kode keluar adalah 0.Anda juga dapat menggunakan
[
denganif
:Tetapi Anda dapat menggunakannya
if
dengan setiap perintah,if
untuk menguji kode keluar. Sebagai contoh:Atau, menggunakan
if
:Anda bisa mendapatkan hasil yang sama hanya menggunakan
test
perintah untuk menguji kode keluar yang disimpan ke variabelstat
:Anda juga dapat menggunakan
[[ ]]
dan(( ))
untuk pengujian, tetapi itu tidak sama dengan[
dantest
, meskipun memiliki sintaks yang hampir sama:Akhirnya, untuk mengetahui apa itu perintah, Anda dapat menggunakan:
sumber
cmp /usr/bin/[ /usr/bin/test
atau mungkin hashsha256sum /usr/bin/[ /usr/bin/test
tetapi tidakstrings
. Di sistem saya (openSUSE Tumbleweed) BTW mereka tidak sama (kenapa).