Remove a character from the end of a variable
BashShellBash Problem Overview
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
Bash Solutions
Solution 1 - Bash
Solution 2 - Bash
Use target=${1%/}
See this the parameter substitution of this bash scripting guide for more.
Solution 3 - Bash
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
Solution 4 - Bash
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.
What did I do?
Substitute 2.19/*
to be 2.19
.
Solution
VER="2.19/foo-bar"
NEWVER=${VER%/*}