【发布时间】:2022-01-15 00:11:27
【问题描述】:
我正在为一个库编写安装脚本(用 bash 编写)。安装脚本位于项目基目录的子目录中。我希望用户能够从基本目录下的任何位置运行安装脚本,因此我尝试在执行其他命令之前将脚本 cd 设置为基本目录。
我在看类似的东西
while [[ $PWD == *"ProjectName"* ] && [ $PWD -ne *"ProjectName" ]]; do cd .. ;done
我对更清洁的解决方案持开放态度,但至少我想了解为什么上述方法不起作用。毫无疑问,我在错误的位置放置了括号,但我不确定将它们放在哪里。
【问题讨论】:
-
您知道安装脚本相对于基本目录的位置吗?首先 cd 到包含脚本的脚本,然后上升适当数量的级别。
-
您可以使用
[[...]]或[...]- 不是两者的组合。它可以是[[ $PWD = *ProjectName ]]或[ "$PWD" = *ProjectName ](在[...]中需要所有变量的双引号(相当于test),但不是[[...]])。您不要使用-ne来比较字符串(它是一个不等于的数字),使用!=来进行字符串不等式。字符串相等也是正确的=,但大多数也会支持==。[[ $PWD = .. ]] && [[ $PWD != .. ]]的条件永远不会测试true
标签: bash