我遇到的问题是我想要一个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 ]] )
答案 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 ]] )