带AND的Bash if语句

带AND的Bash if语句,bash,Bash,试图找出如何在不使用多个if语句的情况下使用此条件 检查这些文件是否在文件夹中,基本上是一个整数是主整数还是另一个整数,因为我使用concat天小时和分钟时间值来获得两个整数,一个是当前时间,另一个是计划时间 FILE1=180.mp4 FILE2=360.mp4 FILE3=720.mp4 FILE4=1080.mp4 FILE5=audio.mp4 TIME=10155 SCHEDULE=20256 if [ test -f "$FILE1" ] &&

试图找出如何在不使用多个if语句的情况下使用此条件 检查这些文件是否在文件夹中,基本上是一个整数是主整数还是另一个整数,因为我使用concat天小时和分钟时间值来获得两个整数,一个是当前时间,另一个是计划时间

FILE1=180.mp4
FILE2=360.mp4
FILE3=720.mp4
FILE4=1080.mp4
FILE5=audio.mp4

TIME=10155
SCHEDULE=20256

if [ test -f "$FILE1" ] && [ test -f "$FILE2" ] &&  [ test -f "$FILE3" ] && [ test -f "$FILE4" ] && [ test -f "$FILE5" ] && (( TIME > SCHEDULE )) ; then 
echo DO EVENT
else
echo DON'T DO EVENT
fi

[
test
是同义词。您应该使用其中一个,而不是两个

备选方案#1:

备选方案2:

但是,与任何语言一样,最好使用数组:

files=(180.mp4 360.mp4 720.mp4 1080.mp4 audio.mp4)
if (( TIME > SCHEDULE ))
then
  for file in "${files[@]}"
  do
    if ! [ -f "$file" ]
    then
      echo "Missing $file" >&2
      exit 1
    fi
  done
  echo "Do the thing"
fi

echo DON DO EVENT
可能会出现问题。如果不引用,则该行中有一个不匹配的引号。shell在查找匹配的“''”时可能会发出
意外的EOF


这应该是一个注释,但我仍在处理rep points以添加注释

您还没有提出实际问题。您遇到了什么问题?如果这是您的实际代码,那么
echo DON DO EVENT
是一个语法错误,因为撇号字符是一个单引号。代码中还有其他问题。如果您收到错误消息,请在问题正文中向我们展示。@Massimovantigio:您发布的程序甚至在语法上都不有效,正如您在自己的帖子中所看到的,其中Stack Overflow的语法高亮显示将您的ìf`和
fi
涂成不同的颜色……这比您想知道的还有什么?
if [ -f "$FILE1" ] && [ -f "$FILE2" ] && [ -f "$FILE3" ] && [ -f "$FILE4" ] && [ -f "$FILE5" ] && (( TIME > SCHEDULE ))
then 
  echo "true"
fi
files=(180.mp4 360.mp4 720.mp4 1080.mp4 audio.mp4)
if (( TIME > SCHEDULE ))
then
  for file in "${files[@]}"
  do
    if ! [ -f "$file" ]
    then
      echo "Missing $file" >&2
      exit 1
    fi
  done
  echo "Do the thing"
fi