/ / bash script verificar strings no arquivo - linux, bash, scripting

bash script check strings em arquivo - linux, bash, scripting

Como faço algo como:

if !("abc" in file1 and "def" in file2)
then
echo "Failed"
fi

Eu já sabia como verificar "abc" no arquivo1: grep -Fxq "abc" file1, mas eu não consigo obter o if not (command1 and command2) parte para o trabalho.

Respostas:

4 para resposta № 1

Você entendeu quase certo. Basta adicionar um espaço entre o ponto de exclamação e os comandos do grep e isso funcionaria:

if ! (grep -Fxq "abc" file1 && grep -Fxq "def" file2); then
echo "Failed"
fi

Assumindo bash, não há necessidade de extra else.

Observe que o uso de parênteses executa os greps em um ambiente de subshell, como um processo de shell filho. Você pode facilmente evitar isso usando chaves (essa coisa é chamada de comando de grupo):

if ! { grep -Fxq "abc" file1 && grep -Fxq "def" file2; }; then
echo "Failed"
fi

Note que você precisa de mais espaços e um ponto e vírgula adicional - isn "t bash sintaxe tão engraçado!?!


2 para resposta № 2

Você poderia fazer:

$ grep -Fxq "abc" file1 && grep -Fxq "def" file2 || echo "Failed"

Isso usa o bash operadores lógicos E && e OU ||.

Isso pode ser dividido em várias linhas como:

$ grep -Fxq "abc" file1 &&
> grep -Fxq "def" file2 ||
> echo "Failed"

2 para resposta № 3
if (grep -Fxq "abc" file1 && grep -Fxq "def" file2);
then
echo ""
else
echo "failed"
fi