Como testar se wc -l é par ou ímpar no shell?

0

digamos que eu tenha um arquivo chamado file1

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

agora como eu faria isso

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

Eu acho que o arquivo1 em wc -c fez esse travamento?

    
por Tinler 26.02.2018 / 01:35

3 respostas

1

Outra maneira de remover o nome do arquivo de wc é usar wc -c <file1 . Isso evita o requisito de um segundo processo cat .

    
por 26.02.2018 / 01:41
2

Eu usaria algo como:

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
    
por 26.02.2018 / 02:15
0

Um caminho a seguir:

a=$(cat file1 | wc -c)

isso não gera o nome do arquivo e seu expr funcionará.

    
por 26.02.2018 / 01:39

Tags