“Parameter substitution” en BASH…

[box type=”note”]Aquesta és una entrada molt específica de programació[/box]

No fa molt vaig descobrir la substitució de paràmetres en bash, i la veritat és que és una eina increïble que evita usos de sed, awk, o cut quan realment no fa falta.

A continuació reproduïsc una llista que he trobat a “BASH Cures Cancer“, un blog que pretén explicar les bondats del BASH per als Linuxers.

  1. Les variables es poden especificar de dues formes: $var o ${var}.
    $ var='a.ads,fssd2342%asd234#@.,&%,sdfgsdfgas4352'
    $ echo ${var}
    a.ads,fssd2342%asd234#@.,&%,sdfgsdfgas4352
  2. ${#var} és la llargària de la variable.
    $ echo ${#var}
    42
  3. ${var:pos} genera una subcadena començant en la posició pos.
    $ echo ${var:10}
    2342%asd234#@.,&%,sdfgsdfgas4352
  4. ${var:pos:len} genera una subcadena començant a en la posició pos d’una llargària len.
    $ echo ${var:10:5}
    2342%
  5. ${var#pattern} esborra el patró pattern començant pel principi de la variable. Aquesta versió para només troba l’expressió regular. ${var##pattern} és la versió extesa.
    $ echo ${var#*,}
    fssd2342%asd234#@.,&%,sdfgsdfgas4352
    $ echo ${var##*,}
    sdfgsdfgas4352
  6. ${var%pattern} elimina el patró pattern començant pel final de la variable. Aquesta versió para només troba l’expressió regular. ${var%%pattern} és la versió extesa.
    $ echo ${var%,*}
    a.ads,fssd2342%asd234#@.,&%
    $ echo ${var%%,*}
    a.ads
  7. ${var/pattern/replacement} substitueix l’expressió regular pattern amb replacement una vegada.
    $ echo ${var/a/A}
    A.ads,fssd2342%asd234#@.,&%,sdfgsdfgas4352
  8. ${var//pattern/replacement} substitueix l’expressió regular pattern amb replacement de manera global.
    $ echo ${var//a/A}
    A.Ads,fssd2342%Asd234#@.,&%,sdfgsdfgAs4352
  9. ${var/#pattern/replacement} si l’inici de la variable és com el patró pattern, es substitueix per replacement.
    $ echo ${var/#a./llll}
    llllads,fssd2342%asd234#@.,&%,sdfgsdfgas4352
  10. ${var/%pattern/replacement} si el final de la variable és com el patró pattern, es substitueix per replacement.
    $ echo ${var/%352/llll}
    a.ads,fssd2342%asd234#@.,&%,sdfgsdfgas4llll

Segur que aquells que utilitzeu el shell habitualment i no coneixieu açò, li podeu traure molt de profit.

Linux, Programació
bash, paràmetres, pattern substitution