2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
$
$()
KäyttöShellin erikoismuuttujat, joita käytetään komentosarjoissa ja funktioissa parametrien välittämiseen.
On olemassa seuraavat erityiset sijaintiparametrimuuttujat:
muuttuja | vaikutus |
---|---|
$0 | Hanki komentosarjatiedoston nimi ja komentosarjapolku |
$n | Hanki 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 |
Hakumenetelmä:man bash
,HaeSpecial Parameters
muuttuja | vaikutus |
---|---|
$? | Viimeisen komennon suoritustilan palautusarvo, 0 on oikea, ei-0 epäonnistui |
$$ | Nykyisen komentotulkkikomentosarjan prosessinumero |
$! | Viimeisimmän taustaprosessin PID |
$_ | Hae viimeisen komennon viimeinen parametri |
-n
: Tulostaa sisältöä ilman rivinvaihtoja-e
: tulkitse pakomerkkejä n
: uusi rivir
: Tulla sisäänt
: välilehtib
:askelpalautinv
: Pysty sarkainmerkkieval ls; cd ~
exec
Suorituksen jälkeen automaattisestiexit
kielioppi:
kielioppi | vaikutus |
---|---|
# | Poista lyhin ottelu alusta |
## | Poista pisin ottelu alusta |
% | Poista lyhyin ottelu lopusta |
%% | Poista pisin tulitikku päästä |
# | Määritellyn hahmosisällön sieppaus |
a*c | Vastaa 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
parameter,参数,范围
${parameter:-word}
:josparameter
Muuttujan arvo on tyhjä, returnword
merkkijono${parameter:=word}
:josparameter
Muuttujan arvo on siis tyhjäword
Korvaa muuttujan arvon ja palauttaa sen arvon${parameter:?word}
:josparameter
Muuttujan arvo on tyhjä,word
kutenstderr
Lähtö, muuten lähtömuuttujan arvo ${parameter:+word}
:josparameter
Jos muuttujan arvo on tyhjä, älä tee mitään, muutenword
palata# 原脚本命令,有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