Reputation: 2344
Bash auto completion appends a / at the end of a directory name. How I can strip this off from a positional parameter?
#!/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
Upvotes: 139
Views: 71837
Reputation: 269
Be careful, bash3 added perl-similar regex to bash. The guide mentioned covers this as well as the official guide at GNU , but not all references do.
Substitute 2.19/*
to be 2.19
.
VER="2.19/foo-bar"
NEWVER=${VER%/*}
Upvotes: 3
Reputation: 992
I think better solution to canonize paths is realpath $path
or with -m
option if it doesn't exist.
This solution automaticaly removes unnecessary slashes and adds pwd
Upvotes: 16
Reputation: 70204
Use target=${1%/}
See this the parameter substitution of this bash scripting guide for more.
Upvotes: 23