Kuten näimme aiemmin muuttujia käsittelevässä luvussa, voit laittaa aaltosulut muuttujan nimen ympärille erottaaksesi sen ympäristöstään:
$ curr=myfile $ rm ${curr}.jpeg
On myös joitain näppäriä temppuja, joita voit tehdä aaltosulkujen sisällä, kuten merkkijonon osien muuttaminen. Oletetaan, että sinulla on tiedosto, jonka nimi on "mypicture.jpeg" eikä "myfile.jpeg". Voit muuttaa muuttujaa "$curr", kun laitat sen komentoon:
$ rm ${curr/file/picture}.jpeg
Joskus voit käyttää muuttujia, jotka on poistettu (minkä voit tehdä komennolla "unset
") tai joita ei ollut koskaan alustettu. Koska oletusarvoisesti komentotulkki käyttää tyhjää merkkijonoa tai olematonta tai määrittelemätöntä muuttujaa, kuten aiemmin näyttämämme komennon "rm
" lisäksi, on hyödyllistä voida korvata oletusarvoinen arvo muuttujalle.
$ cat "${VARIABLE_FILE_NAME:-/home/user/file}"
Operaattori ":-" kysyy päätteeltä onko muuttuja asetettu, nähdäkseen onko se olemassa ja asetettu joksikin merkkijonoksi. jos sitä ei ole koskaan määritelty, tai sillä ei ole arvoa, pääte korvaa tekstin operaattorin ":-" jälkeen.
$ cat "${VARIABLE_FILE_NAME:=/home/user/file}"
Operaattori ":=" tekee paljolti samat asiat, mutta sen sijaan että korvaisi "/home/user/file" nykyiseen komentoon "cat
", jos "VARIABLE_FILE_NAME" ei ole olemassa, pääte asettaa myös muuttujaan vaihtoehtoisen tekstin.
Vaihtoehtoinen laajennus ei ole mitenkään rajoitettu tiedostonimiin. Se on myös näppärä tapa antaa monimutkaisia, usein käytettyjä valitsimia komennoille.
$ export ALT_LS='--color=always -b -h --filetype' $ ls $ALT_LS
Koska vaihtoehtoiset valitsimet on tallennettu ja laajennettu muuttujamuodossa, voit käyttää mitä tahansa oletusarvoja tahdot suurimmalle osalle työstäsi, mutta käyttää nopeasti vaihtoehtoista muotoa erikoistapauksissa.
Parametrien laajentaminen on loistava tapa toimia abstraktisti useampien tiedostojen tai pitkien valitsimien listojen kanssa. Kun ymmärrät sen, se laajentaa toimintamahdollisuuksiasi komentorivillä.
There has been error in communication with Booktype server. Not sure right now where is the problem.
You should refresh this page.