Bash脚本if语句后跟多个或';s

Bash脚本if语句后跟多个或';s,bash,shell,if-statement,Bash,Shell,If Statement,我的问题是,我需要一个if语句来确保第一个语句为true,并且在bash脚本中,以下三个语句中的一个或多个也为true 我目前拥有的代码是: if [[ $TAIL != "true" ]] && [[ -f $FILE_DIR/.completed ]] || [[ -f $FILE_DIR/../.completed ]] || [[ -f $FILE_DIR/../../.completed ]] 我也尝试过: if [[ $TAIL != "true" ]] &

我的问题是,我需要一个if语句来确保第一个语句为true,并且在bash脚本中,以下三个语句中的一个或多个也为true

我目前拥有的代码是:

if [[ $TAIL != "true" ]] && [[ -f $FILE_DIR/.completed ]] || [[ -f $FILE_DIR/../.completed ]] || [[ -f $FILE_DIR/../../.completed ]]
我也尝试过:

if [[ $TAIL != "true" ]] && [[ [[ -f $FILE_DIR/.completed ]] || [[ -f $FILE_DIR/../.completed ]] || [[ -f $FILE_DIR/../../.completed ]] ]]
但两者都不起作用

有人知道如何解决这个问题吗

提前谢谢你的帮助

答案如下:

if [[ $TAIL != "true" ]] && ( [[ -f $FILE_DIR/.completed ]] || [[ -f $FILE_DIR/../.completed ]] || [[ -f $FILE_DIR/../../.completed ]] )

您可以使用括号将OR语句分组:

if [[ $TAIL != "true" ]] && ( [[ -f $FILE_DIR/.completed ]] || [[ -f $FILE_DIR/../.completed ]] || [[ -f $FILE_DIR/../../.completed ]] )

您可以在一个[]内完成所有操作:

if [[ $TAIL != "true" && ( -f $FILE_DIR/.completed || -f $FILE_DIR/../.completed || -f $FILE_DIR/../../.completed ) ]]

非常感谢您提供快速简单的解决方案。感谢您的补充回答。