El uso de $ (), $ (()) y $ {} en el shell

  

Hay una escena de este tipo cuando escribimos el shell:

Por ejemplo: quiero hacer una copia de seguridad del archivo passwd, copia de seguridad Vaya a bak_path = " /mnt /sql_bak /" en esta ruta.

¿Y el nombre del archivo es bak?

Familiarízate con el shell de esta manera:
#! /bin /shbak_path = " /mnt /bak /" cp $ /etc /passwd $ bak_pathbak

Pero esto encontrará $ bak_pathbak este sistema Lo tratará como un nombre de variable, no basado en la variable anterior, y luego agregará un bak. De hecho, hay dos formas de resolver este problema. En la ruta de acceso de bak, no agregue " /" es decir, bak_path = " /mnt /bak ".

y luego cp $ /etc /passwd $ bak_path /Bak de esta manera. El segundo es $ {} para ser dicho hoy. Bak_path = " /mnt /bak " El camino sigue siendo este. El siguiente cp $ /etc /passwd $ {bak_path} bak hará esto.

El segundo escenario se debe hacer en el shell al resultado de un comando. Esta vez debe usar $ ()

Por ejemplo: quiero finalizar un proceso, quiero cerrar Soltar pid para 1915 este tomcat

Primero tengo que obtener este pid primero. Ps -ef | Grep java | Egrep -o " [1-9] {4} " | Jefe -n1, luego mata -9 pid.

Un comando es kill -9 $ (ps -ef | Grep java | Egrep -o " [1-9] {4} " | Cabeza -n1).

Agregue una escena que tenga que calcular 25 * 125 iguales (similar a la operación de la calculadora) Los usuarios de Windows usarán calc para llamar a la calculadora del sistema. Ese linux puede usar echo $ ((25 * 125)).

El uso adicional de $ {} no se limita a la función de extensión de límite variable. También se puede usar para dividir cadenas

, como str = " 123 ″ Quiero usar 23 La dirección positiva es echo $ {str: 1: 2} lo que significa que el primer dígito no se incluye desde el primer dígito, y se toman dos dígitos.

Por ejemplo, str = " abc " take bc, como echo $ {str: 1: 2}

o echo $ {str # * 1} echo $ {str # * a} Tambien Esto significa eliminar 1 a la izquierda, incluido 1; eliminar a para incluir a. La diferencia con lo anterior es que los 1, 2 anteriores son los subíndices de los caracteres correspondientes, y el último método es especificar la cadena

donde # puede reemplazarse por% y otro resultado, el interesado puede Bajo consulta

Copyright © Conocimiento de Windows All Rights Reserved