GNU/Linux >> Belajar Linux >  >> Linux

Perbedaan Antara Operator Bash [[ Vs [ Vs ( Vs ((?

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 :

  1. if [ condition ]

    [ adalah nama lain dari test traditional tradisional memerintah. [ / test adalah utilitas POSIX standar. Semua shell POSIX memilikinya (meskipun itu tidak diperlukan oleh POSIX²). test perintah menetapkan kode keluar dan if pernyataan bertindak sesuai. Tes yang umum adalah apakah sebuah file ada atau satu nomor sama dengan yang lain.

  2. if [[ condition ]]

    Ini adalah variasi baru yang ditingkatkan pada test dari ksh bash . itu , zsh , yash , busybox dia juga mendukung. [[ ... ]] This ini konstruksi juga menetapkan kode keluar dan if pernyataan bertindak sesuai. Di antara fitur-fiturnya yang diperluas, ia dapat menguji apakah string cocok dengan pola wildcard (bukan di busybox sh ).

  3. if ((condition))

    ksh Another lainnya ekstensi yang bash dan zsh juga mendukung. Ini melakukan aritmatika. Sebagai hasil aritmatika, kode keluar ditetapkan dan if pernyataan bertindak sesuai. Ini mengembalikan kode keluar dari nol (benar) jika hasil perhitungan aritmatika bukan nol. Sukai [[...]] , formulir ini bukan POSIX dan karenanya tidak portabel.

  4. if (command)

    Ini menjalankan perintah dalam subkulit. Ketika perintah selesai, itu menetapkan kode keluar dan if pernyataan bertindak sesuai.

    Alasan umum untuk menggunakan subkulit seperti ini adalah untuk membatasi efek samping command jika command penugasan variabel yang diperlukan atau perubahan lain pada lingkungan shell. Perubahan tersebut tidak tetap ada setelah subkulit selesai.

  5. if command

    perintah dijalankan dan if pernyataan bertindak sesuai dengan kode keluarnya.

Terkait:bagaimana saya bisa menggunakan bash sebagai shell login ketika sysadmin menolak untuk membiarkan saya mengubahnya?


Linux
  1. Perbedaan Antara ' Dan ” Di Command Line (bash)??

  2. Perbedaan Antara Perpipaan Dan Ekspansi Perintah?

  3. Apa perbedaan antara &> dan >&di bash?

  1. Perbedaan Antara Perintah Bawaan Dan Yang Tidak?

  2. Perintah "eval" Di Bash?

  3. Apa yang dilakukan -e dalam bash shebang?

  1. Perbedaan Antara [[ $a ==Z* ]] Dan [ $a ==Z* ]?

  2. Apa Perbedaan Antara Sudo Su – Dan Sudo Su —?

  3. Apa perbedaan antara perintah locate dan find di Linux?