如果当前目录是root,则在break时进行bash

时间:2014-08-15 00:19:10

标签: while-loop sh root break

我正在编写一个小的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

3 个答案:

答案 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