Red de conocimiento informático - Problemas con los teléfonos móviles - Script de Shell: varios usos de ${...} en cadenas

Script de Shell: varios usos de ${...} en cadenas

1. ${var}

Variables calificadas.

Si un nombre de variable A es la primera parte de otro nombre de variable AB, entonces si desea obtener el valor de A cuando AB está conectado, debe usar ${var} para calificar.

Si el nombre de la variable no causa ambigüedad (es decir, un nombre de variable independiente), no hay diferencia entre ${var} y $var.

var="hola"

var_01="hola01"

eco $var $var_01 ${var}_01

gt? ;gt; gt; hola hola01 hola_01

2. ${#var}

Obtener la longitud de la variable var

var="hola"

echo ${#var}

gt; gt; 5

3. ${var#}

Elimina los caracteres al final. comienzo de la variable (String),

Lo que sigue a "#" puede ser una cadena literal o una expresión regular (coincidencia diferida).

var="hola"

echo ${var#he}

gt; gt; /res_pos/path/from/something"

echo ${var#/}

gt; gt; gt; res_pos/path/from/something # Eliminar el primer "/ "

echo ${var#/*/}

gt; gt; ruta/de/algo # ¿Eliminar la cadena cuya primera parte coincide con "/*/" es, " /res_pos/"

4. ${var##}

Elimina el carácter (cadena) al principio de la variable,

Sin embargo , cuando se usan 2 "# #", la coincidencia es codiciosa (coincidencia codiciosa, es decir, hacer coincidir tanto como sea posible).

echo ${var##/*/}

gt; gt; ¿eliminar la cadena cuya primera parte coincide con "/*/", es decir, " /res_pos/ruta /desde/".

5. ${var}

Elimina los caracteres (cadenas) al final de la variable.

Lo que sigue a "" puede ser una cadena literal o. una expresión regular (coincidencia diferida).

var="hola"

echo ${varllo}

gt; gt; él

var="~/ res_pos/path/from/something"

echo ${var/*}

gt; gt; gt; ~/res_pos/path/from # Eliminar el "/something" final

6. ${var}

Elimina los caracteres (cadena) al final de la variable,

Sin embargo, cuando se usan 2 "", la coincidencia es codicioso (Correspondiente al ítem 4)

var="~/res_pos/path/from/something"

echo ${var/*}

gt ; gt; gt; ~ # Eliminar todo el contenido después del primer "/" (incluido "/"). var::}

Similar al concepto de corte de Python, toma el índice inicial de la variable var,

una subcadena de longitud especificada (${var: index: length }).

var="~/res_pos/path/from/something"

echo ${var:0:5}

gt; /res

echo ${var: 1: 5}

gt; gt; /res_ ? # Se puede ver que el índice de la cadena comienza desde 0

echo ${var::5}

gt; gt; ~/res ? # Omitir "índice", el valor predeterminado es comenzar desde 0

echo ${var :1:}

gt; gt; # Omitir "longitud", la longitud predeterminada es 0, por lo que la salida está vacía

8. ${ var//}

Reemplazo de cadena.

Reemplace la cadena A en var con la cadena B (${var/A/B}).

var="hola mundo"

echo ${var/hola/hi}

gt; gt; hola mundo? se reemplaza por "hi"

echo ${var/l/X}

gt; gt; heXlo world?

9. ${var///}

Reemplazo de cadena,

Igual que el punto 8, excepto que ahora todas las apariciones son Reemplace la cadena A con la cadena B (${var//A/B}).

var="hola mundo"

echo ${var//l/X}

gt; gt; heXXo worXd? " se reemplazan con "X"

10. ${var/#/}

Reemplace la cadena A al principio de la cadena con la cadena B,

(${var/#A/B}), la diferencia con el punto 8 es que aquí solo se reemplaza la primera cadena A.

var="hola mundo. hola bebé."

echo ${var//h/H}

gt; Hola bebé. # Reemplaza todas las "h" con "H"

echo ${var/#h/H}

gt; Hola mundo. Reemplaza la "h" en el encabezado con "H"

echo ${var/e/E}

gt; hola mundo # Reemplaza el primera aparición de "e" con "E"

echo ${var/#e/E}

gt; hola mundo # El primer carácter. no es "e", por lo que no se realiza ningún reemplazo y se genera como está.

11. ${var//}

Reemplazar la cadena A al final de la cadena con la cadena B,

(${var/A/B }) , similar al punto 10, excepto que trata con el final de la cadena.

var="hola hola"

echo ${var/o/END}

gt; gt; hola infiernoEND # Cambia los caracteres finales " o", sustituido por "FIN".