Saya sedikit bingung tentang apa yang dilakukan operator-operator ini secara berbeda ketika digunakan di bash (kurung, kurung ganda, kurung dan kurung ganda).
[[ , [ , ( , ((
Saya telah melihat orang menggunakannya pada pernyataan if seperti ini :
if [[condition]]
if [condition]
if ((condition))
if (condition)
Jawaban yang Diterima:
Dalam cangkang mirip Bourne, sebuah if pernyataan biasanya terlihat seperti
if
command-list1
then
command-list2
else
command-list3
fi
then klausa dijalankan jika kode keluar dari command-list1 daftar perintah adalah nol. Jika kode keluar bukan nol, maka else klausa dijalankan. command-list1 bisa
sederhana atau kompleks. Misalnya, dapat berupa urutan dari satu atau lebih pipeline yang dipisahkan oleh salah satu operator ; , & , && , || atau baris baru. if kondisi yang ditunjukkan di bawah ini hanyalah kasus khusus command-list1 :
-
if [ condition ][adalah nama lain daritesttraditional tradisional memerintah.[/testadalah utilitas POSIX standar. Semua shell POSIX memilikinya (meskipun itu tidak diperlukan oleh POSIX²).testperintah menetapkan kode keluar danifpernyataan bertindak sesuai. Tes yang umum adalah apakah sebuah file ada atau satu nomor sama dengan yang lain. -
if [[ condition ]]Ini adalah variasi baru yang ditingkatkan pada
testdari ksh bash . itu , zsh , yash , busybox dia juga mendukung.[[ ... ]]This ini konstruksi juga menetapkan kode keluar danifpernyataan bertindak sesuai. Di antara fitur-fiturnya yang diperluas, ia dapat menguji apakah string cocok dengan pola wildcard (bukan di busybox sh ). -
if ((condition))ksh Another lainnya ekstensi yang bash dan zsh juga mendukung. Ini melakukan aritmatika. Sebagai hasil aritmatika, kode keluar ditetapkan dan
ifpernyataan bertindak sesuai. Ini mengembalikan kode keluar dari nol (benar) jika hasil perhitungan aritmatika bukan nol. Sukai[[...]], formulir ini bukan POSIX dan karenanya tidak portabel. -
if (command)Ini menjalankan perintah dalam subkulit. Ketika perintah selesai, itu menetapkan kode keluar dan
ifpernyataan bertindak sesuai.Alasan umum untuk menggunakan subkulit seperti ini adalah untuk membatasi efek samping
commandjikacommandpenugasan variabel yang diperlukan atau perubahan lain pada lingkungan shell. Perubahan tersebut tidak tetap ada setelah subkulit selesai. -
if commandperintah dijalankan dan
ifpernyataan bertindak sesuai dengan kode keluarnya.