informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
$
$()
PenggunaanVariabel khusus shell, digunakan dalam skrip dan fungsi untuk meneruskan parameter.
Ada variabel parameter posisi khusus berikut:
variabel | memengaruhi |
---|---|
$0 | Dapatkan nama file skrip shell dan jalur skrip |
$n | Dapatkan parameter ke-n dari skrip shell. n adalah antara 1 dan 9. Jika lebih besar dari 9, beberapa{} ,menyukai{$10} |
$# | Dapatkan jumlah total parameter di balik skrip shell yang dijalankan |
$* | Dapatkan semua parameter skrip shell, tanpa tanda kutip, itu setara dengan$@ Fungsinya, ditambah tanda kutip "$*", adalahMenerima semua parameter sebagai satu string |
$@ | Tanpa tanda kutip, efeknya sama seperti di atasTerima semua parameter sebagai string independen |
Metode pencarian:man bash
,mencariSpecial Parameters
variabel | memengaruhi |
---|---|
$? | Nilai kembalian status eksekusi perintah terakhir, 0 benar, bukan 0 gagal |
$$ | Nomor proses skrip shell saat ini |
$! | PID dari proses latar belakang terakhir |
$_ | Dapatkan parameter terakhir dari perintah terakhir |
-n
: Menampilkan konten tanpa jeda baris-e
: Menafsirkan karakter escape n
: garis barur
: Memasukit
: tabb
:menghapusv
: Karakter tab vertikaleval ls; cd ~
exec
Setelah eksekusi, secara otomatisexit
tata bahasa:
tata bahasa | memengaruhi |
---|---|
# | Hapus kecocokan terpendek dari awal |
## | Hapus kecocokan terpanjang dari awal |
% | Hapus kecocokan terpendek dari akhir |
%% | Hapus kecocokan terpanjang dari akhir |
# | Intersepsi konten karakter tertentu |
a*c | Cocok dengan string yang dimulai dengan a, sejumlah karakter di tengah, dan diakhiri dengan c |
${变量} | Kembalikan nilai variabel |
${#变量} | Kembalikan panjang variabel, panjang karakter |
${变量:start} | Mengembalikan karakter setelah nilai offset variabel |
${变量:start:length} | Ekstrak karakter yang dibatasi panjangnya setelah offset |
${变量#word} | Dari awal variabel, hapus substring kata terpendek yang cocok |
${变量##word} | Dari awal variabel, hapus kata yang paling cocok |
${变量%word} | Hapus substring kata terpendek yang cocok dari akhir variabel |
${变量%%word} | Hapus substring kata terpanjang yang cocok dari akhir variabel |
${变量/pattern/string} | Ganti pola pencocokan pertama dengan string |
${变量//pattern/string} | Ganti semua pola dengan string |
Contoh operasi: Hapus nama file
# 通过⼦串的替换⽅式
snowk@SnowKYP# f=stu_102999_1_finished.jpg
# 变量的⼦串功能,去掉后缀
snowk@SnowKYP# echo ${f//_finished/}
stu_102999_1.jpg
# 利⽤变量的反引⽤替换⽂件名
snowk@SnowKYP# mv $f `echo ${f//_finished/}`
# 剩下的⽂件,利⽤循环操作
# 找出剩下所有需要替换的jpg⽂件
snowk@SnowKYP# ls *fin*.jpg
stu_102999_2_finished.jpg stu_102999_3_finished.jpg stu_102999_4_finished.jpg
stu_102999_5_finished.jpg
# 写shell循环代码,循环操作
# 去掉所有jpg⽂件的_finished后缀
snowk@SnowKYP# for file in `ls *fin*.jpg`;do mv $file `echo ${file//_finished/}`;done
snowk@SnowKYP# ls *.jpg
stu_102999_1.jpg stu_102999_2.jpg stu_102999_3.jpg stu_102999_4.jpg stu_102999_5.jpg
parameter,参数,范围
${parameter:-word}
:jikaparameter
Nilai variabel kosong, kembalikanword
rangkaian${parameter:=word}
:jikaparameter
Nilai variabelnya kosongword
Menggantikan nilai variabel dan mengembalikan nilainya${parameter:?word}
:jikaparameter
Nilai variabel kosong,word
sebagaistderr
Keluaran, jika tidak, keluarkan nilai variabel ${parameter:+word}
:jikaparameter
Jika nilai variabel kosong, jangan lakukan apa pun, sebaliknyaword
kembali# 原脚本命令,有bug,有歧义
find ${file_path} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f
# 修正后的脚本命令
# 如果有bug起义,就在当前目录搜索并执行删除
find ${file_path:=/tmp} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f