Use a substituição de comandos $()
e -eq
: comparação aritmética:
if [ $(grep 'something' file | wc -l) -eq 5 ]
then
echo equal
else
echo not equal
fi
Estou tentando escrever um script de shell que conte o número de ocorrências de uma string em um arquivo e execute alguma ação com base nele.
Aqui está o meu script:
#!/bin/sh
if [ grep "\s*oplocks\s=" sample.txt | wc -l = 5 ]
then
echo "cnt equals 5"
else
echo "cnt not 5"
fi
Juntamente com grep
, também quero contar o número de ocorrências, por isso estou usando wc -l
. Como posso colocar isso em uma declaração if
?
Obrigado pela sua ajuda!
Use o argumento -c
para grep e ignore wc
ao todo. Além disso, você pode usar um contexto aritmético para evitar -eq e afins.
#!/bin/bash
if (( $(grep -c 'pattern' sample.txt) == 5 )); then
echo "5 occurances"
fi
exit
Tags shell-script