ループ内のファイルコマンド数の計算

ループ内のファイルコマンド数の計算

ls *.txt | wc後でループで使用できるように、別の変数としてどのように使用できますか?それは

count.files=$(ls *.txt | wc)
...

if count.files -ne 2000; then
echo "message"
fi

試してみましたが、うまくいかないようです。

ベストアンサー1

コードにいくつかのエラーがあります。

  • ほとんどのシェルでは、変数名にドットを含めることはできません。
  • 旗をwc持って電話する必要があります-l
  • 旗をls持って電話する必要があります-d
  • オプションの終わりを表示する--か、./プレフィックスを使用する必要があります。ls
  • テストifに括弧がありません(ただし、スタック交換形式になる可能性があります)。
  • ファイル名に改行文字が含まれている場合、この方法は機能しません。
  • 隠しファイルは省略されます。

より良い作業例は次のとおりです。

file_count=$(ls -d ./*.txt | wc -l)
if [ $file_count -ne 2000 ]; then echo "message"; fi

おすすめ記事