GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Asignar solo parte de una cadena a una variable en Bash?

Recibo del usuario una determinada ruta de archivo absoluta y quiero crear una variable que será una cadena que no incluirá solo el PRIMERO dos componentes de la ruta del archivo, pero sin imprimirlo ni nada.

Por ejemplo, la ruta absoluta podría ser:

/home/myusername/folder1/folder2/folder3

Y está guardado en "target_path", y quiero que "mydir" sea solo:

/folder1/folder2/folder3

Intenté usar el comando de corte de diferentes maneras pero sin éxito.

Respuesta aceptada:

Usando la manipulación de cadenas de bash:

$ a=/home/myusername/folder1/folder2/folder3
$ echo "${a#/*/*/}"
folder1/folder2/folder3

Entonces, la cadena que desea sería (volviendo a agregar la barra inclinada inicial):

b="/${a#/*/*/}"

Para una variable a , ${a#foo} eliminará la cadena más corta que coincida con foo desde el inicio de a . Entonces, eliminamos la cadena más corta que contiene tres / (incluida la barra inclinada inicial en la ruta), para eliminar los dos primeros componentes de la ruta absoluta.


Ubuntu
  1. ¿Vista completa de dónde se establece la variable de ruta en Bash?

  2. ¿Usando una referencia a una variable de cadena Bash en Sed?

  3. ¿Cómo permitir solo ciertos caracteres en una variable Bash?

  4. Recorriendo los elementos de una variable de ruta en Bash

  5. Convierta una cadena de texto en bash en una matriz

Variable de exportación de bash

Bash concatenar cadenas

Sustitución de cadena en Bash

Bash Scripting – Manipulación de cadenas

Cómo establecer la variable de entorno en Bash

Agregar carpetas a su variable de entorno de ruta?