Recordatorio de conocimiento de Shell

${max:-0} en el shell significa que si el valor máximo está vacío, el valor es 0

El siguiente es un poco de conocimiento del shell sobre {} expresiones

Supongamos que definimos una variable como:
file=/dir1/dir2/dir3/my.file.txt
que podemos usar Reemplace respectivamente para obtener diferentes valores : {file#*/}: Elimina el primer / y la cadena a su izquierda: dir1/dir2/dir3/my.file.txt
{file##*/}: Elimina el último / y la cadena a su izquierda: my.file.txt{archivo#*.}: elimine el primer .y la cadena a su izquierda: archivo.txt
{file##*.}: elimina el último . y la cadena a su izquierda: txt{file%/*}: elimina el último / y la cadena de la derecha: /dir1/dir2/dir3
{file%%/*}: elimina el primer / y la cadena a la derecha: (valor nulo){file%.*}: elimina el último y la cadena a su derecha: /dir1/dir2/dir3/my.file
${file%%.*}: elimina el primero y la cadena a su derecha:/dir1 /dir2/dir3/my
El método de memoria es:

Es para quitar el lado izquierdo (# en el lado izquierdo de $ en el disco)

% es para eliminar el lado derecho (% está en el lado derecho de $ en el disco).
Un solo símbolo es una coincidencia mínima; dos símbolos son una coincidencia máxima.

Fi l e : 0 : 5 : extrae los 5 bytes más a la izquierda : / d _ _yo r 1 {file:5:5}: extrae 5 bytes consecutivos a la derecha del 5.º byte: /dir2

También podemos reemplazar cadenas en valores de variables:
Fyo la e / di r / p a th : convierte la primera d _Reemplace i r con ruta : / ruta 1 / d _ _ _ _ _ _ _yo r 2 / dyo r 3 / mi _. Fyo l e . t x t {file//dir/path}: Reemplace todos los directorios con la ruta: /path1/path2/path3/my.file.txt

usar También puede asignar valores para diferentes estados de variables ( no establecido , vacío , no vacío ) : {archivo-mi.archivo.txt} : si Fi l e está vacío , luego use m y _. Fi l e .t x t es el valor predeterminado . ( Reserva no establecida y valor no nulo ) {archivo:-mi.archivo.txt} : si Fi l e no está configurado o está vacío , luego use m y. Fi l e .t x t es el valor predeterminado . ( preservar valor no nulo ) {archivo+mi.archivo.txt} : lo que sea F¿Cuál es el valor de i l e , use m y. Fi l e .t x t es el valor predeterminado . ( sin valor retenido ) _ {archivo:+mi.archivo.txt} : a menos que Fi l e es nulo , de lo contrario usa m y _. Fi l e .t x t es el valor predeterminado . ( dejar en blanco ) _ {archivo=mi.archivo.txt} :若 FSi i l e no está configurado , use m y. Fi l e .t x t como el valor predeterminado y establezca _ archivo se define como un valor no nulo. (reservar valores nulos y no nulos)
Fyo l mi : = m y. Fi l e .t x t : si _ Si el archivo no está configurado o está vacío, use my.file.txt como valor predeterminado y configure Fi l e se define como un valor no nulo . ( preservar valor no nulo ) {archivo?mi.archivo.txt} :若 FSi i l e no está configurado , configure m y. Fi l e .t x t salida a S _TDER R. _ ( conservar valores nulos y no nulos ) ) _ {file:?my.file.txt}: si $file no está configurado o está vacío, envía my.file.txt a STDERR. (preservar valor no nulo)

además,{#var} calcula la longitud del valor de la variable:{#file} obtiene 27 porque /dir1/dir2/dir3/my.file.txt tiene exactamente 27 bytes...

Supongo que te gusta

Origin blog.csdn.net/dtwangquan/article/details/47311933
Recomendado
Clasificación