Vars expansions


/ Published in: Bash
Save to your folder(s)

Sorry, the comentaries are in spanish. I will translate them some day.

The examples results are indicated with:
# -> [result]

Usually is the "echo" result


Copy this code and paste it in your HTML
  1. ### Expansión de variables con ${} ###
  2.  
  3. ## Valor por defecto
  4. # Si no está definida una variable, se usa un valor predeterminada. Si está definida,
  5. # se usa su valor
  6. echo ${NAME:-Pepe}
  7. # -> Pepe
  8. NAME="Juanje"
  9. echo ${NAME:-Pepe}
  10. # -> Juanje
  11.  
  12.  
  13. ## Asignar valor por defecto
  14. # Asigna un valor a la variable, pero sólo si está ntiene ya algún valor.
  15. NAME=""
  16. echo $NAME
  17. # ->
  18. echo ${NAME:=Pepe}
  19. # -> Pepe
  20. echo $NAME
  21. # -> Pepe
  22. echo ${NAME:=Juanje}
  23. # -> Pepe
  24.  
  25.  
  26. ## Muestra error si no existe la variable (No si está vacia o no)
  27. # Podemos poner un mensaje personalizado al error
  28. echo ${X?}
  29. # -> -bash: X: parameter null or not set
  30. echo ${X?La variable X no exite}
  31. # -> -bash: X: La variable X no exite
  32. X=""
  33. echo ${X?La variable X no exite}
  34. # ->
  35. X="Algo"
  36. echo ${X?La variable X no exite}
  37. # -> Algo
  38.  
  39.  
  40. ## Usar un valor alternativo, si ya existe la variable y tiene algún valor.
  41. echo ${Y:+Contenido alternativo}
  42. # ->
  43. Y=""
  44. echo ${Y:+Contenido alternativo}
  45. # ->
  46. Y="Algún contenido"
  47. echo ${Y:+Contenido alternativo}
  48. # -> Contenido alternativo
  49.  
  50.  
  51. ## Subcadenas del valor de la variable
  52. # :{inicio}:{tamaño
  53. # Si no se pone el tamañ, se coje la cadena desde el {inicio}, hasta el final
  54. # Se empieza a contar por 0
  55. TEXT="Un texto de ejemplo"
  56. echo ${TEXT:3}
  57. # -> texto de ejemplo
  58. echo ${TEXT:3:5}
  59. # -> texto
  60.  
  61.  
  62. ## Subcadena quitando del principio
  63. # Con un sólo # se quitará la primera ocurrencia de lo que esté detrás
  64. B="blablabla..."
  65. echo ${B#bla}
  66. # -> blabla...
  67. echo ${B#*bla}
  68. # -> blabla...
  69. # Con 2 # se eliminarón cadenas más largas
  70. echo ${B##bla}
  71. # -> blabla...
  72. echo ${B##*bla}
  73. # -> ...
  74. # Otro ejemplo práctico:
  75. D="/srv/chroot/var/chroot/etc/apache"
  76. echo ${D#*chroot}
  77. # -> /var/chroot/etc/apache
  78. echo ${D##*chroot}
  79. # -> /etc/apache
  80.  
  81.  
  82. ## Subcadena quitando del final
  83. # Con un sólo # se quitará última ocurrencia de lo que esté detrás
  84. B="blablabla...blablabla"
  85. echo ${B%bla}
  86. # -> blablabla...blabla
  87. echo ${B%bla*}
  88. # -> blablabla...blabla
  89. # Con 2 % se eliminarón cadenas más largas
  90. echo ${B%%bla}
  91. # -> blablabla...blabla
  92. echo ${B%%bla*}
  93. # ->
  94. # Otro ejemplo práctico:
  95. D="/srv/chroot/var/chroot/etc/apache"
  96. echo ${D%chroot*}
  97. # -> /srv/chroot/var/
  98. echo ${D%%chroot*}
  99. # -> /srv/
  100.  
  101.  
  102. ## Nombres de variables que empiecen por un prefijo
  103. echo ${!U*}
  104. # -> UID USER
  105. echo ${!B*}
  106. # -> B BASH BASH_VERSINFO BASH_VERSION
  107. echo ${!BASH*}
  108. # -> BASH BASH_VERSINFO BASH_VERSION
  109.  
  110. ## Tamaño del contenido de una variable, en caracteres
  111. X="Un texto cualquiera"
  112. echo ${#X}
  113. # -> 19
  114. N=22435
  115. echo ${#N}
  116. # -> 5
  117.  
  118.  
  119. # Sustituir una cadena
  120. a=/etc/kung/foo
  121. echo ${a/foo/fu}
  122. # -> /etc/kung/fu

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.