Bash脚本if语句后跟多个OR

时间:2013-01-29 14:41:46

标签: bash shell if-statement

我遇到的问题是我想要一个if语句,它确保第一个语句为true,并且在bash脚本中以下三个语句中的一个或多个也是如此。

我目前的代码是:

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 ]] )

2 个答案:

答案 0 :(得分:3)

你可以在[[]]中完成所有操作:

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

答案 1 :(得分:2)

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

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