If-Koubou

Apa Perbedaan Antara Kutipan Tunggal dan Ganda di Bash Shell?

Apa Perbedaan Antara Kutipan Tunggal dan Ganda di Bash Shell? (Bagaimana caranya)

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

Aturan umumnya adalah tanda kutip ganda masih memungkinkan perluasan variabel dalam tanda kutip, dan tanda kutip tunggal tidak. Terus membaca.

Kutipan dengan Teks Sederhana

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

mkdir "Test Directory"
mkdir 'Test Directory'

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

Shell Variable Expansion

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 string lengkap. Pertama, kami akan menetapkan variabel:

test = "Ini adalah tes"

Sekarang Anda dapat menggunakan variabel ini pada baris perintah, seperti ini, yang seharusnya hanya menghasilkan 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:

echo '$ test'

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

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

echo 'pwd' / test

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

/ home / geek / test

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

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

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

Sebaliknya, Anda harus mengepung dalam tanda kutip:

ln -s "'pwd' / filename" / beberapa / lainnya / 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 sebagai gantinya. 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 untuk melewati loop, itu akan benar-benar menjalankan perintah seperti ini:

unzip "uji 1.zip"

Tentu saja itu akan melewati dan menjalankan perintah yang sama untuk setiap file di direktori.

Mari Meninjau

Sekarang setelah kami melihat contohnya, kami akan segera meninjau jika Anda melewatkannya:

Kutipan Ganda

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

Kutipan Tunggal

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

Dan dengan demikian mengakhiri pelajaran dari tanda kutip. Gunakan dengan bijak.