Unix / Linux - Mekanisme Penawaran Shell
Pada bab ini, kita akan membahas secara rinci tentang mekanisme kutipan Shell. Kami akan mulai dengan membahas karakter meta.
Para Metakarakter
Unix Shell menyediakan berbagai metakarakter yang memiliki arti khusus saat menggunakannya dalam Skrip Shell mana pun dan menyebabkan penghentian kata kecuali dikutip.
Sebagai contoh, ? cocok dengan satu karakter saat membuat daftar file dalam direktori dan file *cocok dengan lebih dari satu karakter. Berikut adalah daftar sebagian besar karakter khusus shell (juga disebut metakarakter) -
* ? [ ] ' " \ $ ; & ( ) | ^ < > new-line space tab
Sebuah karakter dapat dikutip (yaitu, dibuat untuk berdiri sendiri) dengan mendahului dengan a \.
Contoh
Contoh berikut menunjukkan cara mencetak a * atau a ? -
#!/bin/sh
echo Hello; Word
Setelah eksekusi, Anda akan menerima hasil berikut -
Hello
./test.sh: line 2: Word: command not found
shell returned 127
Sekarang mari kita coba menggunakan karakter yang dikutip -
#!/bin/sh
echo Hello\; Word
Setelah eksekusi, Anda akan menerima hasil berikut -
Hello; Word
Itu $ tanda adalah salah satu karakter meta, jadi harus dikutip untuk menghindari penanganan khusus oleh shell -
#!/bin/sh
echo "I have \$1200"
Setelah eksekusi, Anda akan menerima hasil berikut -
I have $1200
Tabel berikut mencantumkan empat bentuk kutipan -
Sr.No. | Mengutip & Deskripsi |
---|---|
1 | Single quote Semua karakter khusus di antara tanda kutip ini kehilangan arti khususnya. |
2 | Double quote Sebagian besar karakter khusus di antara tanda kutip ini kehilangan makna khususnya dengan pengecualian ini -
|
3 | Backslash Karakter apapun yang mengikuti garis miring terbalik akan kehilangan arti khususnya. |
4 | Back quote Apa pun di antara tanda kutip belakang akan diperlakukan sebagai perintah dan akan dieksekusi. |
Kutipan Tunggal
Pertimbangkan perintah echo yang berisi banyak karakter shell khusus -
echo <-$1500.**>; (update?) [y|n]
Menempatkan garis miring terbalik di depan setiap karakter khusus itu membosankan dan membuat garis sulit dibaca -
echo \<-\$1500.\*\*\>\; \(update\?\) \[y\|n\]
Ada cara mudah untuk mengutip sekelompok besar karakter. Letakkan satu tanda kutip (') di awal dan di akhir string -
echo '<-$1500.**>; (update?) [y|n]'
Karakter dalam tanda kutip tunggal seperti jika garis miring terbalik di depan setiap karakter. Dengan ini, perintah echo ditampilkan dengan cara yang benar.
Jika kutipan tunggal muncul dalam string untuk menjadi output, Anda tidak boleh meletakkan seluruh string dalam tanda kutip tunggal, Anda harus mendahului menggunakan garis miring terbalik (\) sebagai berikut -
echo 'It\'s Shell Programming
Kutipan Ganda
Coba jalankan skrip shell berikut. Skrip shell ini menggunakan kutipan tunggal -
VAR=ZARA
echo '$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]'
Setelah eksekusi, Anda akan menerima hasil berikut -
$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]
Ini bukanlah apa yang harus ditampilkan. Jelas bahwa tanda kutip tunggal mencegah substitusi variabel. Jika Anda ingin mengganti nilai variabel dan membuat koma terbalik berfungsi seperti yang diharapkan, maka Anda perlu meletakkan perintah dalam tanda kutip ganda sebagai berikut -
VAR=ZARA
echo "$VAR owes <-\$1500.**>; [ as of (`date +%m/%d`) ]"
Setelah eksekusi, Anda akan menerima hasil berikut -
ZARA owes <-$1500.**>; [ as of (07/02) ]
Tanda kutip ganda menghilangkan arti khusus dari semua karakter kecuali yang berikut -
$ untuk substitusi parameter
Kutipan belakang untuk substitusi perintah
\$ untuk mengaktifkan tanda dolar literal
\` untuk mengaktifkan kutipan latar belakang literal
\" untuk mengaktifkan tanda kutip ganda tersemat
\\ untuk mengaktifkan garis miring terbalik yang disematkan
Semua lainnya \ karakter literal (tidak khusus)
Karakter dalam tanda kutip tunggal seperti jika garis miring terbalik di depan setiap karakter. Ini membantu perintah echo ditampilkan dengan benar.
Jika kutipan tunggal muncul dalam string untuk menjadi output, Anda tidak boleh meletakkan seluruh string dalam tanda kutip tunggal, Anda harus mendahului menggunakan garis miring terbalik (\) sebagai berikut -
echo 'It\'s Shell Programming'
The Backquotes
Menempatkan perintah Shell di antaranya backquotes menjalankan perintah.
Sintaksis
Berikut adalah sintaks sederhana untuk meletakkan Shell apa pun command di antara kutipan latar belakang -
var=`command`
Contoh
Itu date perintah dijalankan dalam contoh berikut dan hasil yang dihasilkan disimpan dalam variabel DATA.
DATE=`date`
echo "Current Date: $DATE"
Setelah eksekusi, Anda akan menerima hasil berikut -
Current Date: Thu Jul 2 05:28:45 MST 2009