Saltar al contenido

Reemplace la barra diagonal inversa (“”) con la barra diagonal (“/”) en una variable en bash

Presta atención porque en este escrito vas a hallar la solución que buscas.

Solución:

La sustitución correcta es

home_mf="$home//\//"

Esto se desglosa de la siguiente manera:

  • // reemplazar cada
  • \ barra invertida
  • / con
  • / barra oblicua

Demostración:

$ t='abc'; echo "$t//\//"
/a/b/c

Una alternativa que puede ser más fácil de leer sería citar el patrón y el reemplazo:

home_mf="$home//''/"/""

Esto lo hará:

home_mf=$home////\ # forward to backward slash
home_mf=$home//\// # backward to forward slash

p.ej:

$ cat slash.sh
#!/bin/bash
set -x
home=/aa/bb/cc       
home_mf=$home////\
echo $home_mf
home_mf=$home_mf//\//
echo $home_mf
$ ./slash.sh
+ home=aa/bb/cc
+ home_mf='aabbcc'
+ echo 'aabbcc'
aabbcc
+ home_mf=/aa/bb/cc
+ echo /aa/bb/cc
/aa/bb/cc

los $variable/.. la sintaxis es ksh, bashy posiblemente otros shells específicos, pero no estarán presentes en todos los shells basados ​​en la sintaxis de shell de Bourne, por ejemplo dash. Si desea una forma portátil (POSIX), puede usar sed en cambio:

home_mf=$(printf "%s" "$home" | sed 's///\/g')    # forward to backward slash
home_mf=$(printf "%s" "$home_mf" | sed 's/\///g') # backward to forward slash

Reseñas y valoraciones del tutorial

Recuerda que tienes la opción de agregar una reseña si diste con el arreglo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *