检测 bash 中的推送深度?

检测 bash 中的推送深度?

我希望能够pushd在 bash shell 中以编程方式检测堆栈何时非空。有什么方法可以检测到这一点吗?

类似于 $SLVL 的东西会很好。但到目前为止,我找到的唯一解决方案是使用解析原始输出以检测深度的别名来包装pushd和。popd虽然这可行,但感觉不是特别优雅。 (显然,信息存储在环境中的某个地方。)

我的原因是,在这种情况下,我希望用推送的深度计数来装饰我的 bash 提示符。

答案1

您可以检查DIRSTACK长度:

$ [[ ${#DIRSTACK[@]} -gt 1 ]] && echo dir stack non-empty

DIRSTACK请注意,如果未设置,则无法使用此方法。

答案2

depth=$( ( $(dirs -v | wc -l) -1) )

是另一种较差的解决方案。

相关内容