Bei der automatischen Bash-Vervollständigung wird ein / am Ende eines Verzeichnisnamens angehängt. Wie kann ich dies von einem Positionsparameter entfernen?
#!/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%/}
Verwenden
target=${1%/}
Sieh dir das an der Parameterersetzung dieses Bash-Skripthandbuchs .
quelle
Ich denke, eine bessere Lösung zum Kanonisieren von Pfaden ist
realpath $path
oder mit-m
Option, wenn es nicht existiert. Diese Lösung entfernt automatisch unnötige Schrägstriche und fügt pwd hinzuquelle
readlink -f
etwas tragbarer ist alsrealpath
. Für zusätzliche / alternative Optionen: linux.die.net/man/1/readlinktarget=$(realpath -L --relative-base . $1)
Seien Sie vorsichtig, bash3 hat perl-ähnlichen Regex zu bash hinzugefügt. Der erwähnte Leitfaden behandelt dies ebenso wie der offizielle Leitfaden bei GNU , aber nicht alle Referenzen tun dies.
Was habe ich getan?
Ersatz
2.19/*
zu sein2.19
.Lösung
quelle