A instrução if
executa um comando e verifica seu status de saída.
Usar $os_version
como um comando funciona expandindo-o e executando a linha de comando resultante. Portanto, se a variável contiver Ubuntu 18.04.1 LTS \n \l
, ele tentará executar um comando chamado Ubuntu
com os argumentos 18.04.1
, LTS
, etc.
Você provavelmente vai querer usar
if [ -n "$os_version" ]; then
...
fi
para verificar se a variável está vazia ou não ( [ -n "$var" ]
é true se não estiver vazia, enquanto [ -z "$var" ]
se a variável estiver vazia).
Como alternativa, você poderia usar o grep
dentro da declaração if
como você fez na edição e definir uma variável lá:
distro=unknown
if grep -q Ubuntu < /etc/issue; then
distro=ubuntu
fi
# ... later
if [ "$distro" = ubuntu ]; then
# do something Ubuntu-specific
fi