Shell 变量


Apabila mentakrifkan pembolehubah, jangan tambahkan tanda dolar ($, diperlukan untuk pembolehubah dalam bahasa PHP) dalam nama pembolehubah, seperti:

your_name="php.cn"

Perhatikan bahawa tidak boleh ada ruang antara nama pembolehubah dan tanda sama, yang mungkin tidak konsisten dengan Semua bahasa pengaturcaraan yang anda biasa gunakan adalah berbeza. Pada masa yang sama, penamaan nama pembolehubah mesti mengikut peraturan berikut:

  • Aksara pertama mestilah huruf (a-z, A-Z).

  • Tidak boleh ada ruang di tengah dan garis bawah (_) boleh digunakan.

  • Tanda baca tidak boleh digunakan.

  • Kata kunci dalam bash tidak boleh digunakan (anda boleh menggunakan arahan bantuan untuk melihat kata kunci yang dikhaskan).

Selain penugasan langsung yang eksplisit, anda juga boleh menggunakan penyata untuk memberikan nilai kepada pembolehubah, seperti:

for file in `ls /etc`

Pernyataan di atas akan menggelungkan fail nama dalam direktori di bawah /etc.


Menggunakan pembolehubah

Untuk menggunakan pembolehubah yang ditentukan, cuma tambahkan tanda dolar di hadapan nama pembolehubah, seperti:

your_name="qinjx"
echo $your_name
echo ${your_name}

Pendakap kerinting di luar pembolehubah nama Ia adalah pilihan, anda boleh menambahnya atau tidak Pendakap kerinting ditambah untuk membantu jurubahasa mengenal pasti sempadan pembolehubah, seperti situasi berikut:

for skill in Ada Coffe Action Java; do
    echo "I am good at ${skill}Script"
done

Jika anda tidak menambah pendakap kerinting pada pembolehubah kemahiran, tulis gema "Saya mahir dalam $skillScript", jurubahasa akan menganggap $skillScript sebagai pembolehubah (nilainya kosong), dan hasil pelaksanaan kod tidak akan seperti yang kita harapkan.

Adalah disyorkan untuk menambah pendakap kerinting pada semua pembolehubah Ini adalah tabiat pengaturcaraan yang baik.

Pembolehubah yang ditakrifkan boleh ditakrifkan semula, seperti:

your_name="tom"
echo $your_name
your_name="alibaba"
echo $your_name

Ini sah untuk ditulis, tetapi ambil perhatian bahawa anda tidak boleh menulis $your_name="alibaba" apabila menetapkan nilai untuk Penggunaan kali kedua Hanya tambahkan tanda dolar ($) apabila menentukan pembolehubah.

Pembolehubah baca sahaja

Gunakan perintah baca sahaja untuk menentukan pembolehubah sebagai pembolehubah baca sahaja Nilai pembolehubah baca sahaja tidak boleh diubah.

Contoh berikut cuba menukar pembolehubah baca sahaja, tetapi ralat dilaporkan:

#!/bin/bash
myUrl="http://www.w3cschool.cc"
readonly myUrl
myUrl="http://www.php.cn"

Jalankan skrip dan hasilnya adalah seperti berikut:

/bin/sh: NAME: This variable is read only.

Padam pembolehubah

Gunakan arahan yang tidak ditetapkan. Sintaks:

unset variable_name

Pembolehubah tidak boleh digunakan semula selepas ia dipadamkan. Perintah yang tidak ditetapkan tidak boleh memadamkan pembolehubah baca sahaja.

Contoh

#!/bin/sh
myUrl="http://www.php.cn"
unset myUrl
echo $myUrl

Tidak akan ada output apabila melaksanakan contoh di atas.

Jenis pembolehubah

Apabila menjalankan shell, tiga pembolehubah akan wujud pada masa yang sama:

  • 1) Pembolehubah setempat Pembolehubah tempatan berada dalam Ditakrifkan dalam skrip atau perintah, ia hanya sah dalam contoh shell semasa Program yang dimulakan oleh shell lain tidak boleh mengakses pembolehubah tempatan.

  • 2) Pembolehubah persekitaran Semua program, termasuk program yang dimulakan oleh shell, boleh mengakses pembolehubah persekitaran Sesetengah program memerlukan pembolehubah persekitaran untuk memastikan operasi normalnya. Skrip Shell juga boleh menentukan pembolehubah persekitaran apabila perlu.

  • 3) Pembolehubah shell Pembolehubah shell ialah pembolehubah khas yang ditetapkan oleh program shell. Beberapa pembolehubah shell adalah pembolehubah persekitaran dan beberapa pembolehubah tempatan Pembolehubah ini memastikan operasi normal shell


String Shell

String ialah jenis data yang paling biasa digunakan dan berguna dalam pengaturcaraan shell (kecuali nombor dan rentetan, tiada jenis lain yang mudah digunakan ), rentetan boleh menggunakan petikan tunggal, petikan berganda atau tiada petikan. Perbezaan antara petikan tunggal dan berganda adalah serupa dengan PHP.

Petikan tunggal

str='this is a string'

Penghadan untuk rentetan petikan tunggal:

  • Sebarang aksara dalam petikan tunggal akan dikeluarkan sebagaimana adanya dan pembolehubah dalam rentetan petikan tunggal adalah tidak sah; Petikan tunggal tidak boleh muncul dalam rentetan petikan tunggal (walaupun selepas menggunakan aksara melarikan diri untuk petikan tunggal).

  • Petikan berganda

    your_name='qinjx'
    str="Hello, I know your are \"$your_name\"! \n"
  • Kelebihan petikan berganda:

Anda boleh mempunyai pembolehubah dalam petikan berganda

  • Aksara melarikan diri boleh muncul dalam petikan berganda

  • Sambung rentetan

    your_name="qinjx"
    greeting="hello, "$your_name" !"
    greeting_1="hello, ${your_name} !"
    echo $greeting $greeting_1
  • Dapatkan panjang rentetan
string="abcd"
echo ${#string} #输出 4

Ekstrak subrentetan

Contoh berikut memintas

4

aksara bermula daripada

2

aksara rentetan:

string="php is a great site"
echo ${string:1:4} # 输出 unoo
Cari subrentetanCari aksara "

i

atau

s

" kedudukan:

string="php is a great company"
echo `expr index "$string" is`  # 输出 8
Nota: "`" dalam skrip di atas adalah tanda belakang, bukan satu petikan "'", Jangan salah faham .

Tatasusunan Shell

bash menyokong tatasusunan satu dimensi (tidak menyokong tatasusunan berbilang dimensi), dan tidak mengehadkan saiz tatasusunan.

Sama seperti bahasa C, subskrip elemen tatasusunan diberi nombor bermula dari 0. Untuk mendapatkan elemen dalam tatasusunan, gunakan subskrip Subskrip boleh berupa integer atau ungkapan aritmetik, dan nilainya harus lebih besar daripada atau sama dengan 0.

Tentukan tatasusunan

Dalam Shell, kurungan digunakan untuk mewakili tatasusunan dan elemen tatasusunan dipisahkan oleh simbol "ruang". Bentuk umum untuk mentakrifkan tatasusunan ialah:

数组名=(值1 值2 ... 值n)

Contohnya:

array_name=(value0 value1 value2 value3)

atau

array_name=(
value0
value1
value2
value3
)

Anda juga boleh mentakrifkan setiap komponen tatasusunan secara berasingan:

array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen

boleh diabaikan Subskrip berterusan, dan tiada had untuk julat subskrip.

Membaca tatasusunan

Format umum untuk membaca nilai elemen tatasusunan ialah:

${数组名[下标]}

Contohnya:

valuen=${array_name[n]}

Gunakan simbol @ untuk mendapatkan semua elemen dalam Elemen tatasusunan, contohnya:

echo ${array_name[@]}

Dapatkan panjang tatasusunan

Kaedah mendapatkan panjang tatasusunan adalah sama dengan kaedah mendapatkan panjang tatasusunan rentetan, contohnya:

# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}

Komen Shell

Barisan yang bermula dengan "#" ialah ulasan dan akan diabaikan oleh jurubahasa.

Tiada ulasan berbilang baris dalam sh, anda hanya boleh menambah tanda # pada setiap baris. Ia hanya boleh seperti ini:

#--------------------------------------------
# 这是一个注释
# author:php中文网
# site:www.php.cn
# slogan: php中文网
#--------------------------------------------
##### 用户配置区 开始 #####
#
#
# 这里可以添加脚本描述信息
# 
#
##### 用户配置区 结束  #####

Apakah yang perlu saya lakukan jika semasa proses pembangunan, saya menemui sebahagian besar kod yang perlu diulas buat sementara waktu, dan kemudian tidak diulas selepas beberapa ketika?

Terlalu susah untuk menambah simbol # pada setiap baris Anda boleh melampirkan kod untuk diulas dalam sepasang pendakap kerinting dan mentakrifkannya sebagai fungsi Jika tiada tempat untuk memanggil fungsi ini. kod ini tidak akan dilaksanakan , mencapai kesan yang sama seperti komen.