1

我希望我清楚地表达了我的问题。具体来说,是这样的:

我想使用 test 或 case 语句来确定变量 $DIR 中包含的目录名称是我的当前目录 (.) 还是父目录 (..)

当然,我可以回显当前目录(回显 $PWD),但是回显 $PWD 的父级的最简单方法是什么?

谢谢。

4

3 回答 3

5

您可以使用${PWD%/*}

$ echo $PWD
/home/me/test/t
$ echo ${PWD%/*}
/home/me/test

由于表达式正在剥离从后面${PWD%/*}的最短匹配:/*$PWD

Bash Reference Manual → 3.5.3 Shell Parameter Expansion

${参数%字}

单词被扩展以产生一个模式,就像在文件名扩展中一样。如果模式匹配参数扩展值的尾随部分,则扩展的结果是删除了最短匹配模式的参数值。如果 parameter 是 '@' 或 '<em>',则模式移除操作将依次应用于每个位置参数,并且展开是结果列表。如果 parameter 是下标为 '@' 或 '</em>' 的数组变量,模式删除操作将依次应用于数组的每个成员,展开是结果列表。

于 2013-07-25T13:10:53.813 回答
2
dirname $PWD

或者

dirname $(pwd)
于 2013-07-25T13:13:19.203 回答
0

realpath

parent=$(realpath "$PWD/..")
于 2015-02-16T19:24:05.783 回答