$?
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