Shell? Variable
Variabel shell
Ketika anda mendefinisikan suatu variabel, nama variabel tanpa tanda dolar ($, variabel bahasa PHP diperlukan), seperti:
your_name="w3big.com"
Perhatikan bahwa tidak ada ruang antara nama variabel dan tanda sama, yang mungkin asing bagi Anda dan semua bahasa pemrograman yang tidak sama. Sementara itu, nama variabel harus mengikuti aturan penamaan ini:
- Karakter pertama harus berupa huruf (az, AZ).
- Tidak ada ruang, menggunakan garis bawah (_).
- Anda tidak dapat menggunakan tanda baca.
- Anda tidak dapat menggunakan bash kata kunci (bantuan perintah untuk melihat kata kunci milik tersedia).
Selain eksplisit tugas langsung, Anda dapat juga memberikan nilai pada variabel dengan pernyataan seperti:
for file in `ls /etc`
Di atas pernyataan itu nama file / etc direktori dari peredaran.
menggunakan Variabel
Menggunakan variabel didefinisikan, asalkan nama variabel diawali dengan tanda dolar, seperti ini:
your_name="qinjx" echo $your_name echo ${your_name}
nama variabel di luar kurung kurawal adalah opsional, ditambah tanpa hak semua, menambahkan kawat gigi untuk membantu menjelaskan variabel identifikasi batas, seperti kasus berikut:
for skill in Ada Coffe Action Java; do echo "I am good at ${skill}Script" done
Jika Anda tidak memberikan variabel keterampilan ditambah kawat gigi, ditulis echo "Saya baik di $ skillScript", penafsir akan menempatkan $ skillScript sebagai variabel (nilai kosong), eksekusi kode bukanlah hasil yang kita harapkan sama lagi.
Beritahu semua variabel kawat gigi, itu adalah praktek pemrograman yang baik.
variabel didefinisikan, dapat ditetapkan kembali, seperti:
your_name="tom" echo $your_name your_name="alibaba" echo $your_name
Menulis adalah legal, tetapi perhatikan bahwa ketika tugas kedua tidak bisa menulis $ your_name = "Alibaba", menggunakan variabel ketika ditambahkan ke tanda dolar ($).
Baca-satunya variabel
Gunakan perintah variabel readonly dapat didefinisikan sebagai baca-satunya variabel, nilai read-only variabel tidak dapat diubah.
Contoh berikut mencoba untuk mengubah variabel read-only, hasil yang diberikan:
#!/bin/bash myUrl="http://www.w3cschool.cc" readonly myUrl myUrl="http://www.w3big.com"
Jalankan script dengan hasil sebagai berikut:
/bin/sh: NAME: This variable is read only.
Hapus variabel
Gunakan perintah unset untuk menghapus variabel. sintaks:
unset variable_name
Variabel tidak dapat digunakan kembali setelah dihapus. perintah unset tidak dapat menghapus variabel read-only.
contoh
#!/bin/sh myUrl="http://www.w3big.com" unset myUrl echo $myUrl
Contoh pelaksanaan atas tidak akan memiliki output.
Jenis variabel
Ketika Anda menjalankan shell, akan ada tiga parameter secara simultan:
- 1) Variabel lokal Variabel lokal didefinisikan dalam naskah atau perintah hanya berlaku di shell contoh saat, program shell startup lain tidak dapat mengakses variabel lokal.
- 2) variabel lingkungan semua program, termasuk program shell mulai, dapat mengakses variabel lingkungan, beberapa aplikasi membutuhkan variabel lingkungan untuk memastikan operasi normal mereka. Bila perlu, script shell juga dapat mendefinisikan variabel lingkungan.
- 3) variabel shell shell variabel adalah variabel khusus yang ditetapkan oleh program shell. shell variabel bagian dari variabel lingkungan, beberapa variabel lokal untuk memastikan operasi normal dari shell
shell tali
pemrograman String shell adalah tipe data yang paling umum dan berguna (kecuali angka dan string, juga tidak memiliki jenis lain berguna), string dapat tertutup dalam tanda kutip tunggal, tanda kutip ganda juga dapat digunakan, atau mungkin tidak dalam tanda kutip. Perbedaan antara tanda kutip tunggal dan ganda dengan PHP mirip.
tanda petik tunggal
str='this is a string'
Single-dikutip string pembatasan:
- Setiap karakter dalam tanda kutip tunggal adalah output sebagai tanda kutip tunggal dalam variabel string tidak valid;
- string tunggal dikutip tidak dapat muncul dalam kutipan tunggal (menggunakan tanda kutip tunggal setelah karakter melarikan diri atau).
tanda kutip ganda
your_name='qinjx' str="Hello, I know your are \"$your_name\"! \n"
Ganda mengutip keuntungan:
- tanda kutip ganda dapat memiliki variabel
- tanda kutip ganda dapat muncul karakter escape
String concatenation
your_name="qinjx" greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1
Dapatkan panjang string
string="abcd" echo ${#string} #输出 4
ekstrak substring
Berikut contoh dari dua string karakter pertama mulai menangkap empat karakter:
string="w3big is a great site" echo ${string:1:4} # 输出 unoo
Cari substring
Menemukan karakter "i atau s" Posisi:
string="w3big is a great company" echo `expr index "$string" is` # 输出 8
Catatan: di atas script "` "anti-kutipan daripada tanda kutip tunggal" ' "Jangan tertipu, oh.
shell Array
pesta mendukung array satu dimensi (tidak mendukung array multidimensi), dan tidak menentukan ukuran array.
Mirip dengan bahasa C, subscript dari elemen array dari nomor 0 mulai. Akan array elemen untuk mengambil keuntungan dari subscript itu, subscript mungkin integer atau ekspresi aritmatika yang nilainya harus lebih besar dari atau sama dengan 0.
mendefinisikan array
Di Shell, menggunakan tanda kurung untuk menunjukkan array, elemen array dengan "ruang" simbol dipisahkan. Bentuk umum dari array didefinisikan sebagai berikut:
数组名=(值1 值2 ... 值n)
Sebagai contoh:
array_name=(value0 value1 value2 value3)
atau
array_name=( value0 value1 value2 value3 )
Anda juga dapat menentukan secara terpisah untuk masing-masing komponen dari array:
array_name[0]=value0 array_name[1]=value1 array_name[n]=valuen
Anda tidak dapat menggunakan indeks terus menerus, dan tidak ada batasan di bawah kisaran target.
Baca Array
Format umum membaca nilai elemen array:
${数组名[下标]}
Sebagai contoh:
valuen=${array_name[n]}
Gunakan simbol @ bisa mendapatkan array dari semua elemen, seperti:
echo ${array_name[@]}
Dapatkan panjang array
Mendapat array panjang panjang string dan mendapatkan cara yang sama, misalnya:
# 取得数组元素的个数 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得数组单个元素的长度 lengthn=${#array_name[n]}
shell Catatan
Sejalan dengan "#" pada awal komentar, akan diabaikan oleh interpreter.
sh tidak ada multi-line komentar, setiap baris hanya dapat menambahkan tanda #. Hanya seperti ini:
#-------------------------------------------- # 这是一个注释 # author:本教程 # site:www.w3big.com # slogan:学的不仅是技术,更是梦想! #-------------------------------------------- ##### 用户配置区 开始 ##### # # # 这里可以添加脚本描述信息 # # ##### 用户配置区 结束 #####
Jika proses pembangunan, mengalami potongan besar kode perlu komentar sementara setelah beberapa saat dan tanda komentar, bagaimana melakukannya?
Setiap baris menambahkan simbol # terlalu melelahkan, Anda dapat menaruh beberapa kode yang akan dijelaskan dengan sepasang kurung keriting, yang didefinisikan sebagai fungsi, tidak ada tempat untuk memanggil fungsi ini, kode ini tidak akan dieksekusi, dan mencapai sebagai anotasi efek.