预期的“fi”是意外的?

JoB*_*oBe 0 shell-script files

我正在尝试检查文件大小是否小于 9999 字节,但我不知道为什么它在这里中断..

if compgen -G "$jdir0/"*.srt 
then

for f in "$jdir0"/*.srt
do
    jsubtitle="$(basename $f)"
    filesize=$(du -b "$jdir0/$jsubtitle" | cut -f1)
        if [ "$filesize" -lt 9999 ] then
           echo "less"
        fi   #line 443
        if [ $filesize -gt 10000 ] then......etc,etc...



    **line 443: syntax error near unexpected token `fi'**
Run Code Online (Sandbox Code Playgroud)

我检查了变量 $filesize,它只包含数字,没有空格,我也试过在 if 语句中的变量 $filesize(和 9999)周围没有“”。我也测试过双 [[,但没有..

这是语句在“for f in..”循环中的另一个if语句中,但这不应该影响这个吗?

小智 5

我认为您的问题是您then与条件在同一条线上。它要么需要在下一行,要么在它之前有一个分号。

解决方案: if [ "$filesize" -lt 9999 ]; then