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

関連情報