O preenchimento automático do Bash anexa a / no final de um nome de diretório. Como posso retirar isso de um 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##*[!/]}"};; esac
target=${DIR%/}
Usar
target=${1%/}
Veja esta substituição de parâmetro deste guia de script do bash para obter mais.
fonte
Eu acho que a melhor solução para canonizar caminhos é
realpath $path
ou com-m
opção se ela não existir. Esta solução remove automaticamente barras desnecessárias e adiciona senhasfonte
readlink -f
é um pouco mais portátil do querealpath
. Para opções de additonal / alternativas: linux.die.net/man/1/readlinktarget=$(realpath -L --relative-base . $1)
Cuidado, o bash3 adicionou regex semelhante ao perl ao bash. O guia mencionado cobre isso, assim como o guia oficial do GNU , mas nem todas as referências.
O que eu fiz?
Substitua
2.19/*
para ser2.19
.Solução
fonte