如何向后走一条路径并将路径存储在变量中

如何向后走一条路径并将路径存储在变量中

假设我已经将路径存储在变量中:

tmp=/home/abc/xyz

所以我现在想要的是向后退一步并将其存储在变量中

tmp2=/home/abc

请让我知道如何在没有任何错误的情况下实现这一目标

答案1

听起来像是一份工作dirname。文件/目录不必存在,它只是切断最后一部分,所以你永远不会得到错误。因为/它回来了/

tmp2="$(dirname -- "$tmp")"

答案2

替代dirname。这要求路径不为空且不是相对路径。

tmp2=$(set -f; IFS=/; set -- $tmp; echo "/${*:1:$# ? $# - 1: 0}")

不管怎样,我不喜欢他们使用 subshel​​l。因此,dirname将结果分配给全局变量的函数版本__会更好,但会更加冗长。

相关内容