2

我有一个问题,我想要一个 if 语句来确保第一个语句为真,并且以下三个语句中的一个或多个在 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 ]] )
4

2 回答 2

3

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

if [[ $TAIL != "true" && ( -f $FILE_DIR/.completed || -f $FILE_DIR/../.completed || -f $FILE_DIR/../../.completed ) ]]
于 2013-01-29T15:11:32.647 回答
2

您可以用括号对 OR 语句进行分组:

if [[ $TAIL != "true" ]] && ( [[ -f $FILE_DIR/.completed ]] || [[ -f $FILE_DIR/../.completed ]] || [[ -f $FILE_DIR/../../.completed ]] )
于 2013-01-29T14:44:58.260 回答