【问题标题】:bash cd up to specific directorybash cd 到特定目录
【发布时间】:2022-01-15 00:11:27
【问题描述】:

我正在为一个库编写安装脚本(用 bash 编写)。安装脚本位于项目基目录的子目录中。我希望用户能够从基本目录下的任何位置运行安装脚本,因此我尝试在执行其他命令之前将脚本 cd 设置为基本目录。

我在看类似的东西

while [[ $PWD == *"ProjectName"* ] && [ $PWD -ne *"ProjectName" ]]; do cd .. ;done

我对更清洁的解决方案持开放态度,但至少我想了解为什么上述方法不起作用。毫无疑问,我在错误的位置放置了括号,但我不确定将它们放在哪里。

【问题讨论】:

  • 您知道安装脚本相对于基本目录的位置吗?首先 cd 到包含脚本的脚本,然后上升适当数量的级别。
  • Thisthis 向您展示了如何组合多个条件,但您的方法一开始可能不是最佳的。
  • 您可以使用[[...]][...] - 不是两者的组合。它可以是[[ $PWD = *ProjectName ]][ "$PWD" = *ProjectName ](在[...] 中需要所有变量的双引号(相当于test),但不是[[...]])。您不要使用-ne 来比较字符串(它是一个不等于的数字),使用!= 来进行字符串不等式。字符串相等也是正确的=,但大多数也会支持==[[ $PWD = .. ]] && [[ $PWD != .. ]] 的条件永远不会测试 true

标签: bash


【解决方案1】:

以下是我想要的。感谢大家(尤其是@David C. Rankin)提供帮助的 cmets。

while [[ "$PWD" = *"ProjectName"* && ! "$PWD" = *"ProjectName" ]]
      do
      cd ..
done

【讨论】:

    猜你喜欢
    • 2014-08-02
    • 1970-01-01
    • 2014-07-25
    • 2013-12-02
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    相关资源
    最近更新 更多