我正在编写一个小的bash脚本来调用网站的构建脚本,如果当前目录在某个网站内,那么程序是cd
到父目录,而构建脚本不是在当前目录中,而当前目录不是/
。然后检查构建脚本是否存在,如果存在,则运行它。这就是我所拥有的:
while [ ! -f build-site.py ]
do
[["`pwd`" == "/"]] && break
cd ..
done
为什么这不起作用?我尝试过几种不同的变化;这个重复打印出一条错误消息,直到我按Ctrl-C:
/home/gus/bin/build-site: 7: /home/gus/bin/build-site: [[/: not found
答案 0 :(得分:2)
也更简单:
until [ -f build-site.py ] || [ "$(exec pwd)" = / ]
do
cd ..
done
答案 1 :(得分:0)
[[
之后(以及]]
之前)空格丢失。
[[ "`pwd`" == "/" ]]
答案 2 :(得分:0)
shellcheck指出了一些问题。事实证明我正在运行的shell(POSIX)不支持双方括号,也不是double等于。这有效:
while [ ! -f build-site.py ]
do
[ $(pwd) = "/" ] && break
cd ..
done