a saída do comando ipset não é armazenada em variável

0

Estou construindo um script para detectar se o IPSET existe.

#!/bin/bash
str=$(/usr/sbin/ipset test IPsetName 1.1.1.1)

echo "$str" #outputs blank line

if [[ $str = *"The set with the given name does not exist"* ]]; then
  echo "IPsetName not found"
fi

Quando executo este script, recebo esta saída:

ipset v6.29: The set with the given name does not exist

depois, uma linha em branco para echo "$str" e não vejo a saída esperada da instrução if.

Como armazenar a saída do comando ipset para a variável?

    
por Jsp 23.09.2018 / 23:04

1 resposta

0

Obrigado ao @StephenHarris

A saída do comando ipset é gerada em stderr (não stdout) e 2>&1 captura a saída para a variável.

str=$(/usr/sbin/ipset test IPsetName 1.1.1.1 2>&1)

if [[ $str = *"The set with the given name does not exist"* ]]; then
   echo "IPsetName not found"
fi

Agora, esta declaração if funciona conforme o esperado!

    
por 24.09.2018 / 03:56

Tags