Gabarito disponível
#!/bin/bash
a=1
b=2
if [ $a > $b ]
then
echo Sim
else
echo Nao
fi
A execução do script acima sem a passagem de nenhum parâmetro produz a seguinte saída no terminal:
Resolução comentada
No test do shell, o '>' é redirecionamento de saída, e não comparação; sobra um teste de string não vazia, que é verdadeiro.
Em [ $a > $b ], o shell interpreta '> 2' como redirecionamento para um arquivo chamado '2'. O comando executado fica '[ 1 ]', que testa se a string '1' não é vazia, o que é verdadeiro. Por isso o script imprime 'Sim' e cria o arquivo '2'. A comparação numérica correta seria [ $a -gt $b ].
Análise das alternativas
A) 'Nao' seria o resultado de uma comparação numérica correta. B) Não há erro de sintaxe. D) Apenas um dos ramos do if é executado. E) A saída não é vazia: imprime 'Sim'.
Referência: Manual do Bash: redirecionamento e comando test ([ ]).
Resolução comentada do VaiConcursos.