从变量末尾删除字符

Bash 自动完成在目录名的末尾追加一个/。如何从位置参数中去掉这个参数?

#!/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
70816 次浏览

使用

target=${1%/}

参考文献.

使用 target=${1%/}

更多信息请参见 Bash 脚本指南的参数替换

注意,bash3向 bash 添加了与 perl 类似的正则表达式。上面提到的指南和 GNU 的官方指南一样涵盖了这一点,但并非所有的参考文献都这样做。

我做了什么?

2.19/*替换为 2.19

解决方案

VER="2.19/foo-bar"
NEWVER=${VER%/*}

我认为更好的解决方案,以规范化的路径是 realpath $path或与 -m选项,如果它不存在。 此解决方案自动删除不必要的斜杠并添加 pwd