una minusculas mayusculas eliminar ejemplo convertir comando caracteres cadena string bash shell uppercase lowercase

string - minusculas - ¿Cómo convertir una cadena de mayúscula a minúscula en Bash?



convertir minusculas a mayusculas bash (7)

¿Por qué no ejecutar en backticks?

x=`echo "$y" | tr ''[:upper:]'' ''[:lower:]''`

Esto asigna el resultado del comando en los backticks a la variable x . (es decir, no es particular de tr sino que es un patrón / solución común para las secuencias de comandos shell)

Puedes usar $(..) lugar de los backticks. Mira here para más información.

Esta pregunta ya tiene una respuesta aquí:

He estado buscando una manera de convertir un valor de cadena de mayúsculas a minúsculas. Todos los resultados de búsqueda muestran enfoques de uso del comando tr .

El problema con el comando tr es que puedo obtener el resultado solo cuando uso el comando con la instrucción echo. Por ejemplo:

y="HELLO" echo $y| tr ''[:upper:]'' ''[:lower:]''

Lo anterior funciona y da como resultado ''hola'', pero necesito asignar el resultado a una variable de la siguiente manera:

y="HELLO" val=$y| tr ''[:upper:]'' ''[:lower:]'' string=$val world

Cuando asigno el valor como arriba, me da un resultado vacío.

PD: la versión de My Bash es 3.1.17


Esto funcionó para mí. Gracias Rody!

y="HELLO" val=$(echo $y | tr ''[:upper:]'' ''[:lower:]'') string="$val world"

una pequeña modificación, si usa un guión bajo junto a la variable, debe encapsular el nombre de la variable en {}.

string="${val}_world"


Estoy en Ubuntu 14.04, con Bash versión 4.3.11. Sin embargo, todavía no me divierto construyendo la manipulación de cadenas ${y,,}

Esto es lo que utilicé en mi script para forzar las mayúsculas:

CAPITALIZED=`echo "${y}" | tr ''[a-z]'' ''[A-Z]''`


La forma correcta de implementar su código es

y="HELLO" val=$(echo "$y" | tr ''[:upper:]'' ''[:lower:]'') string="$val world"

Esto usa la notación $(...) para capturar la salida del comando en una variable. Tenga en cuenta también las comillas alrededor de la variable de string ; las necesita allí para indicar que $val y world son una sola cosa que debe asignarse a la string .

Si tiene bash 4.0 o superior, una forma más eficiente y elegante de hacerlo es usar la manipulación de cadena bash incorporada:

y="HELLO" string="${y,,} world"


Si define su variable usando declare (old: typeset), puede indicar el caso del valor a lo largo del uso de la variable.

$ declare -u FOO=AbCxxx $ echo $FOO ABCXXX

"-l" hace lc.


Si está utilizando bash 4 puede usar el siguiente enfoque:

x="HELLO" echo $x # HELLO y=${x,,} echo $y # hello z=${y^^} echo $z # HELLO

Use solo uno o ^ para que la primera letra esté en lowercase o uppercase .


Tenga en cuenta que tr solo puede manejar ASCII simple, lo que hace que cualquier solución basada en tr falle al enfrentarse a caracteres internacionales.

Lo mismo ocurre con la solución bash 4 basada en ${x,,} .

La herramienta awk , por otro lado, admite adecuadamente incluso la entrada UTF-8 / multibyte.

y="HELLO" val=$(echo "$y" | awk ''{print tolower($0)}'') string="$val world"

Respuesta cortesía de liborw .