Saya selalu terkejut bahwa di folder /bin
ada [
program.
Apakah ini yang disebut ketika kita melakukan sesuatu seperti if [ something ]
:?
Dengan memanggil [
program secara eksplisit dalam sebuah shell, ia meminta korespondensi ]
, dan ketika saya memberikan braket penutup sepertinya tidak melakukan apa pun, apa pun yang saya masukkan di antara kurung.
Tak perlu dikatakan, cara biasa untuk mendapatkan bantuan tentang suatu program tidak bekerja, yaitu tidak man [
juga tidak [ --help
berfungsi.
man '['
berfungsi dengan baik untuk saya - baik Anda lupa mengutip [
atau Anda memiliki definisi yang berbeda dari "karya".
[
mengevaluasi argumennya, jadi Anda perlu memiliki ruang di antara semuanya. [ a=b ]
bukan perbandingan: itu akan selalu benar (itu adalah string tunggal: "a = b", yang selalu dievaluasi menjadi benar ) Dan Anda harus membatasi jumlah argumen hingga 4 (meskipun implementasi terbaru akan memungkinkan lebih banyak .. membatasi hingga 4 menjadikannya lebih portabel. Misalnya: [ "a" = "b" ]
sudah memiliki 4 argumen: "a" "=" "b" dan akhir uji arg yang tidak perlu: "]"). Jika Anda membutuhkan lebih banyak: tes berantai dengan misalnya:if [ "$Var_a" = "foo" ] && [ "$Var_b" = "bar" ] ; then : do something ; fi
!
dengan sendirinya (tidak dihapus dan tidak dikutip) tidak akan diganti, dan bahkan lebih baik if ! [ ...
. Semua ekspansi bash yang digunakan !
termasuk setidaknya pada karakter lain
[
-builtin di bash
(dan mungkin juga kerang lain), dan ini bisa digunakan sebagai ganti /bin/[
. Juga ada test
perintah-, yang pada banyak sistem adalah tautan simbolis ke /bin/[
(atau sebaliknya) - tetapi pada yang lain adalah perintah yang terpisah.
[
merujuk padatest
perintah, bukanexpr
, jadi seharusnyaman test