for循环if语句语法错误

for循环if语句语法错误

如果该语句为真,我的代码中存在语法错误,无法移动文件。该代码将永远持续下去。还尝试添加引号但无法添加。我知道我会犯一些愚蠢的错误。

for file in *.sort; 
do if [`wc -l` $i -eq 57817]; 
then mv "$i" "../$i"; 
fi; done

有什么建议么?

答案1

  1. [和 条件之间需要有一个空格
  2. $i未设置
  3. 您的命令替换不包括整个命令(wc -l file是整个命令,您只是环绕wc -l
  4. wc -l file将输出会导致错误的行数和文件名。 wc -l <file可以用来避免这种情况
for file in *.sort; do 
  if [ "$(wc -l <"$file")" -eq 57817 ]; then 
    mv "$file" "../$file"
  fi
done

相关内容