Teknologian jakaminen

[Linux][Shell][Shell-muuttujat] selitetty yksityiskohtaisesti

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


1. Paikalliset muuttujat

  • Määrittele Shell-muuttujat, muuttujien nimiä ei tarvitse lisätä$
  • paikallinen muuttujaVoimassa vain käyttäjän nykyisen kuoren käyttöiän aikana

2. Muuttujan määritelmä

  • Muuttujan nimivaatimukset: Koostuu kirjaimista, numeroista ja alaviivoista. Se voi alkaa kirjaimilla tai alaviivoilla.
  • Muuttujien nimissä kirjainkoolla on merkitystä

3. Hanki muuttujan arvo

  • heittomerkki: Mitä näet, sen saat, vahva lainaus
  • Tuplalainausmerkit: Näytä kaikki sisältö lainausmerkeissä, tunnista erikoissymbolit, heikot viittaukset
  • Ei lainauksia: Jatkuvat symbolit voivat olla ilman lainausmerkkejä, jos niissä on välilyöntejä.
  • takaisin tikku: Viittaa komennon suoritustulokseen, yhtä suuri kuin$()Käyttö

4.Erityismuuttujat

  • Shellin erikoismuuttujat, joita käytetään komentosarjoissa ja funktioissa parametrien välittämiseen.

  • On olemassa seuraavat erityiset sijaintiparametrimuuttujat:

    muuttujavaikutus
    $0Hanki komentosarjatiedoston nimi ja komentosarjapolku
    $nHanki komentosarjan n:s parametri n on välillä 1 - 9. Jos se on suurempi kuin 9, jotkut{},Kuten{$10}
    $#Hanki suoritetun komentotulkkikomentosarjan takana olevien parametrien kokonaismäärä
    $*Hanki kaikki komentosarjan parametrit ilman lainausmerkkejä, se vastaa$@Funktio sekä lainausmerkit "$*" onVastaanottaa kaikki parametrit yhtenä merkkijonona
    $@Ilman lainausmerkkejä vaikutus on sama kuin edellä lainausmerkeilläVastaanota kaikki parametrit itsenäisinä merkkijonoina

5.Erityistilamuuttujat

  • Hakumenetelmäman bash,HaeSpecial Parameters

    muuttujavaikutus
    $?Viimeisen komennon suoritustilan palautusarvo, 0 on oikea, ei-0 epäonnistui
    $$Nykyisen komentotulkkikomentosarjan prosessinumero
    $!Viimeisimmän taustaprosessin PID
    $_Hae viimeisen komennon viimeinen parametri

6. Shellin sisäänrakennetut muuttujakomennot

1.kaiku

  • parametri
    • -n: Tulostaa sisältöä ilman rivinvaihtoja
    • -e: tulkitse pakomerkkejä
      • n: uusi rivi
      • r: Tulla sisään
      • t: välilehti
      • b:askelpalautin
      • v: Pysty sarkainmerkki

2.eval

  • Toiminto: Suorita useita komentoja
  • Esimerkkieval ls; cd ~

3.exec

  • Toiminto: Älä luo aliprosessia ja suorita myöhempiä komentoja.execSuorituksen jälkeen automaattisestiexit

7. Katkaisumerkkijono

  • kielioppi

    kielioppivaikutus
    #Poista lyhin ottelu alusta
    ##Poista pisin ottelu alusta
    %Poista lyhyin ottelu lopusta
    %%Poista pisin tulitikku päästä
    #Määritellyn hahmosisällön sieppaus
    a*cVastaa merkkijonoa, joka alkaa a:lla, mikä tahansa määrä merkkejä keskellä ja päättyy c:hen
    ${变量}Palauttaa muuttujan arvon
    ${#变量}Palauttaa muuttuvan pituuden, merkin pituuden
    ${变量:start}Palauttaa merkin muuttujan offset-arvon jälkeen
    ${变量:start:length}Poimi pituuden rajoittamat merkit siirtymän jälkeen
    ${变量#word}Poista muuttujan alusta lyhin vastaava sanaosamerkkijono
    ${变量##word}Poista muuttujan alusta pisin vastaava sana
    ${变量%word}Poista lyhin vastaava sanaosamerkkijono muuttujan lopusta
    ${变量%%word}Poista pisin vastaava sanan osamerkkijono muuttujan lopusta
    ${变量/pattern/string}Korvaa ensimmäinen vastaava kuvio merkkijonolla
    ${变量//pattern/string}Korvaa kaikki kuviot narulla
  • Toimintaesimerkki: Poista tiedoston nimi

    # 通过⼦串的替换⽅式
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

8. Erityinen kuoren laajennusmuuttujien käsittely

1. Kielioppi

  • Toiminto: Nämä neljä laajennettua muuttujaa kuuluvat kaikki muuttujien arvojen arviointiin ja käsittelyyn.
  • kielioppiparameter,参数,范围
    • ${parameter:-word}:josparameterMuuttujan arvo on tyhjä, returnwordmerkkijono
    • ${parameter:=word}:josparameterMuuttujan arvo on siis tyhjäwordKorvaa muuttujan arvon ja palauttaa sen arvon
    • ${parameter:?word}:josparameterMuuttujan arvo on tyhjä,wordkutenstderrLähtö, muuten lähtömuuttujan arvo
      • Käytetään palauttamaan virhesanoma, kun muuttujan tyhjäksi asettamisen vuoksi tapahtuu virhe.
    • ${parameter:+word}:josparameterJos muuttujan arvo on tyhjä, älä tee mitään, muutenwordpalata

2. Sovellusskenaariot

  • Tietojen varmuuskopiointi, komentosarja vanhentuneiden tietojen poistamiseksi
    # 原脚本命令,有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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6