Primer Boolean Cepat untuk Bash
The ifPernyataan mengambil perintah sebagai argumen (seperti halnya &&, ||, dll). Kode hasil integer dari perintah ditafsirkan sebagai boolean (0 / null = true, 1 / else = false).
The testPernyataan mengambil operator dan operan sebagai argumen dan mengembalikan kode hasil dalam format yang sama seperti if. Sebuah alias dari testpernyataan tersebut adalah [, yang sering digunakan dengan ifuntuk melakukan perbandingan yang lebih kompleks.
The truedan falsepernyataan melakukan apa-apa dan kode hasil (0 dan 1, masing-masing). Sehingga mereka dapat digunakan sebagai boolean literal di Bash. Tetapi jika Anda meletakkan pernyataan di tempat yang ditafsirkan sebagai string, Anda akan mengalami masalah. Dalam kasus Anda:
if [ foo ]; then ... # "if the string 'foo' is non-empty, return true"
if foo; then ... # "if the command foo succeeds, return true"
Begitu:
if [ true ] ; then echo "This text will always appear." ; fi;
if [ false ] ; then echo "This text will always appear." ; fi;
if true ; then echo "This text will always appear." ; fi;
if false ; then echo "This text will never appear." ; fi;
Hal ini mirip dengan melakukan sesuatu seperti echo '$foo'vs echo "$foo".
Saat menggunakan testpernyataan, hasilnya tergantung pada operator yang digunakan.
if [ "$foo" = "$bar" ] # true if the string values of $foo and $bar are equal
if [ "$foo" -eq "$bar" ] # true if the integer values of $foo and $bar are equal
if [ -f "$foo" ] # true if $foo is a file that exists (by path)
if [ "$foo" ] # true if $foo evaluates to a non-empty string
if foo # true if foo, as a command/subroutine,
# evaluates to true/success (returns 0 or null)
Singkatnya , jika Anda hanya ingin menguji sesuatu sebagai lulus / gagal (alias "benar" / "salah"), maka berikan perintah ke pernyataan Anda ifatau lainnya &&, tanpa tanda kurung. Untuk perbandingan yang rumit, gunakan tanda kurung dengan operator yang tepat.
Dan ya, saya sadar tidak ada yang namanya tipe boolean asli di Bash, dan itu ifdan [dan truesecara teknis "perintah" dan bukan "pernyataan"; ini hanya penjelasan yang sangat mendasar dan fungsional.