Bash 脚本 if 语句后跟多个 OR

标签 bash shell if-statement

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

最佳答案

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

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

关于Bash 脚本 if 语句后跟多个 OR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14585488/

相关文章:

linux - Bash 脚本将工作目录更改为它所在的目录

shell - 如何从剪贴板粘贴?

java - Android RecyclerView 根据条件传递和显示 Item 数据

C# Linq - 如果输入不等于任何字符串 []

javascript - 基于字符计数的 if/else 条件 jQuery

linux - unix 中的 Bash Shell 脚本以 rsh 到另一台机器并执行命令

python - 在作业文件中加载 virtualenv 以在 linux 集群上运行

当在 .bashrc 调用的单独文件中定义时,Bash 别名不起作用

shell - awk 命令转换文件中的日期格式

bash - (unix shell 脚本)解压多个 zip 文件,在 zip 文件名后重命名解压文件