Beranda » bagaimana » Apa Perbedaan Antara Kutipan Tunggal dan Ganda di Bash Shell?

    Apa Perbedaan Antara Kutipan Tunggal dan Ganda di Bash Shell?

    Menutup teks dalam tanda kutip adalah praktik yang cukup standar pada baris perintah, terutama ketika berhadapan dengan file yang memiliki spasi dalam nama, tetapi bagaimana Anda tahu apakah akan menggunakan tanda kutip tunggal atau ganda? Mari kita lihat perbedaannya, dan kapan Anda harus menggunakan yang satu vs yang lain.

    Aturan umum adalah bahwa tanda kutip ganda masih memungkinkan perluasan variabel dalam tanda kutip, dan tanda kutip tunggal tidak. Teruslah membaca.

    Kutipan dengan Teks Sederhana

    Jika Anda hanya melampirkan beberapa kata teks, tidak masalah yang mana yang Anda gunakan, karena keduanya akan bekerja sama persis. Sebagai contoh, kedua perintah ini akan membuat direktori bernama Test Directory:

    mkdir "Direktori Uji"
    mkdir 'Direktori Tes'

    Tipe yang lebih berpengalaman mungkin akan mencatat bahwa Anda juga bisa menggunakan mkdir Test \ Directory jika Anda mau.

    Ekspansi Variabel Shell

    Perbedaan antara tanda kutip tunggal dan ganda menjadi lebih penting ketika Anda berurusan dengan variabel pada baris perintah-secara default, bash akan memperluas variabel seperti $ test ke dalam string penuh. Pertama, kami akan menetapkan variabel:

    test = "Ini adalah tes"

    Sekarang Anda dapat menggunakan variabel ini di baris perintah, seperti ini, yang seharusnya hanya keluaran Ini adalah sebuah ujian ke konsol:

    echo $ test

    Di sinilah perbedaan antara tanda kutip ganda dan tunggal menjadi lebih jelas - ketika Anda menggunakan tanda kutip tunggal variabel tidak akan diperluas. Misalnya, jika Anda menjalankan perintah ini:

    gema '$ test'

    Anda tidak akan melihat apa pun selain '$ test' pada baris perintah ketika Anda menggunakan tanda kutip tunggal, tetapi itu akan ditampilkan dengan benar ketika Anda menggunakan tanda kutip ganda:

    Hal yang sama berfungsi ketika Anda menggunakan karakter 'untuk memperluas perintah pada baris perintah. Misalnya, Anda ingin menggunakan pwd perintah dari dalam perintah lain - Anda akan menggunakan backticks untuk memberi tahu shell untuk memperluasnya:

    gema 'pwd' / test

    Jika Anda berada di folder rumah Anda, Anda akan melihat output yang tampak seperti ini:

    / home / geek / test

    Katakan, misalnya, Anda berada di folder yang memiliki ruang di jalur, dan Anda ingin menggunakan perintah ln untuk membuat tautan simbolik ke file di direktori saat ini. Anda biasanya perlu menentukan path lengkap saat menggunakan perintah ln, jadi lebih mudah menggunakan 'pwd' untuk menyimpan pengetikan.

    Lihat apa yang terjadi ketika Anda mencoba dan menggunakan perintah tanpa menyertakan tanda kutip:

    ln -s 'pwd' / test / home / geek / linkedname

    Alih-alih, Anda harus mengelilingi tanda kutip:

    ln -s "'pwd' / namafile" / some / other / path

    Untuk contoh yang lebih konkret, mari kita asumsikan bahwa kita memiliki struktur folder seperti contoh ini, di mana semua nama file memiliki spasi di dalamnya:

    Karena perintah unzip tidak mendukung penggunaan * untuk menjalankannya terhadap semua file, Anda harus menggunakan perintah for. Di sinilah hal-hal menjadi menarik:

    untuk f di * .zip; lakukan unzip $ f; selesai

    Ups! Sepertinya itu tidak berhasil.

    Yang perlu kita lakukan adalah menggunakan tanda kutip ganda di sekitar variabel $ f, seperti ini:

    untuk f di * .zip; lakukan unzip "$ f"; selesai

    Sekarang setiap kali perintah for melewati loop, itu akan benar-benar menjalankan perintah seperti ini:

    unzip "test 1.zip"

    Tentu saja akan berulang dan menjalankan perintah serupa untuk setiap file dalam direktori.

    Mari Tinjau

    Sekarang kita telah melihat contoh-contohnya, kita akan segera meninjau jika Anda melewatkannya:

    Kutipan Ganda

    • Gunakan saat Anda ingin menyertakan variabel atau menggunakan ekspansi shell di dalam string.
    • Semua karakter di dalam diinterpretasikan sebagai karakter biasa kecuali untuk $ atau 'yang akan diperluas pada shell.

    Kutipan tunggal

    • Semua karakter dalam tanda kutip tunggal ditafsirkan sebagai karakter string.

    Dan dengan demikian mengakhiri pelajaran dari kutipan. Gunakan dengan bijak.