La finalización automática de Bash agrega un / al final del nombre de un directorio. ¿Cómo puedo quitar esto de un parámetro posicional?
#!/bin/sh
target=$1
function backup(){
date=`date "+%y%m%d_%H%M%S"`
PWD=`pwd`
path=$PWD/$target
tar czf /tmp/$date$target.tar.gz $path
}
backup

case $x in *[!/]*/) x=${x%"${x##*[!/]}"};; esactarget=${DIR%/}Utilizar
target=${1%/}Vea esto la sustitución de parámetros de esta guía de secuencias de comandos bash para obtener más información.
fuente
Creo que la mejor solución para canonizar rutas es
realpath $patho con-mopción si no existe. Esta solución elimina automáticamente las barras innecesarias y agrega pwdfuente
readlink -fes un poco más portátil querealpath. Para opciones adicionales / alternativas: linux.die.net/man/1/readlinktarget=$(realpath -L --relative-base . $1)Tenga cuidado, bash3 agregó expresiones regulares similares a perl a bash. La guía mencionada cubre esto, así como la guía oficial de GNU , pero no todas las referencias lo hacen.
Que hice
Sustituir
2.19/*a ser2.19.Solución
fuente