从变量的末尾删除斜杠

Bur*_*ime 126 bash shell

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
Run Code Online (Sandbox Code Playgroud)

mar*_*ton 234

使用

target=${1%/}
Run Code Online (Sandbox Code Playgroud)

一个参考.

  • 它是[POSIX](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02),所以非常便携. (7认同)
  • 见[Gilles](https://unix.stackexchange.com/users/885/gilles) [答案](https://unix.stackexchange.com/questions/198045/how-to-strip-the-last-slash -of-the-directory-path)用于在保持root(/)安全的同时去除多个尾随'/'的简单方法:`case $ x in*[!/]*/)x = $ {x%"$ {X##*[!/]}"};; esac` (3认同)

Gre*_*osz 22

使用 target=${1%/}

有关更多信息,请参阅此bash脚本编制指南的参数替换.


ame*_*sky 11

我认为如果没有路径realpath $path,-m可以选择更好的canonize路径解决方案.此解决方案自动删除不必要的斜线并添加pwd

  • 并非每个发行版都包含 realpath。例如,我正在运行 Linux Mint 17(基于 Ubuntu)并且默认情况下没有它。它在存储库中,但不会自动安装。这就是我发布的链接所讨论的内容。 (2认同)
  • 这对我有用:`target=$(realpath -L --relative-base . $1)` (2认同)