シェルでwc -lが偶数か奇数かをテストする方法は?

シェルでwc -lが偶数か奇数かをテストする方法は?

file1というファイルがあるとしましょう。

$ a=$(wc -c file1)
$ echo $a
233 file1

今どうすればいいですか?

$ b=$(expr $a % 2)
$ echo $b
1

wc -c makeのfile1がクラッシュを引き起こすと思いますか?

答え1

私は次のようなものを使用します:

if [ $(( $(wc -c < your-filehere ) % 2)) -eq 1 ]
then 
  echo file has odd number of bytes
else 
  echo file has even number of bytes
fi

答え2

ファイル名を削除するもう1つの方法wcはを使用することですwc -c <file1。これにより、2番目のステップは必要ありませんcat

答え3

1つの方法は次のとおりです。

a=$(cat file1 | wc -c)

ファイル名は出力されず、expr操作できます。

関連情報