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