我希望我清楚地表达了我的问题。具体来说,是这样的:
我想使用 test 或 case 语句来确定变量 $DIR 中包含的目录名称是我的当前目录 (.) 还是父目录 (..)
当然,我可以回显当前目录(回显 $PWD),但是回显 $PWD 的父级的最简单方法是什么?
谢谢。
您可以使用${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>' 的数组变量,模式删除操作将依次应用于数组的每个成员,展开是结果列表。
dirname $PWD
或者
dirname $(pwd)
parent=$(realpath "$PWD/..")