Shell: Verifique se o contêiner docker está existente

1

Como faço para verificar em um script bash se isso

sudo docker images -q nginx

me dá uma sequência de resultados, o que significa que esse contêiner é existente

sudo docker images -q nginx
if [ $? != '' ]
then
    echo "existing"
else
    echo "missing
    
por user3142695 10.02.2017 / 09:54

2 respostas

2

$? não é uma string, mas o status de saída de sudo (neste caso). Para usá-lo corretamente, compare-o com zero com -gt ou use if (( $? )) (em um shell como bash ou ksh93 que faz avaliação aritmética com (( ... )) ).

Se sudo docker images -q nginx der a você uma string se o container existir e nada se não, então você pode armazenar isso em uma variável e ver se ela está vazia ou não:

result=$( sudo docker images -q nginx )

if [[ -n "$result" ]]; then
  echo "Container exists"
else
  echo "No such container"
fi
    
por 10.02.2017 / 10:00
0
sudo docker images -q nginx
if [ $? -eq 0 ];
then
     echo "existing"
else
     echo "missing"
fi

$? : Exit status. Every command returns an exit status or exit code, A successful command returns a '0', while an unsuccessful one returns a non-zero value (1 - 255 range) that usually can be interpreted as an error code.

Se o container existir, o status de saída será 0, senão será 1.

    
por 10.02.2017 / 10:07