Erro de script Bash

1

Estou tentando escrever um script para gerenciar a configuração de um perfil de usuário. Eu não consigo descobrir porque esta afirmação não funcionará. Eu tenho o código:

#!/bin/bash
#check if programs are installed
( TMUX=$(tmux -V) && echo "tmux at version $TMUX" ) || echo "tmux not installed"
if [ $TMUX != "1.8" ]; then
    echo "installing tmux"
fi

mas não importa o que eu tente, eu constantemente recebo o erro

test.sh: line 6: syntax error near unexpected token 'fi'
test.sh: line 6: 'fi'

Alguma idéia do que poderia causar isso?

    
por Jacobm001 11.09.2013 / 23:18

2 respostas

5

Se você executar tmux -v e tmux não estiver instalado, receberá um erro. Atribuir a variável em um subshell também significa que ela nunca é definida fora, a menos que seja exportada. Em vez disso, tente e verifique com which :

TMUX="$(which tmux > /dev/null && tmux -v)"
if [ "$TMUX" != "1.8" ]; then
    echo "installing tmux"
fi

A comparação de sequências com test exige que você cite seu argumento , caso contrário você obter um erro sobre um operador unário esperado do Bash.

    
por 11.09.2013 / 23:26
4

Do seu código, parece que você definiu o valor do TMUX em um subshell para que você não tivesse esse valor definido quando você está na instrução if. Como você estaria essencialmente fazendo uma instrução if com uma variável não definida, isso causará um erro de sintaxe. Não vejo nenhum motivo para você ter o subshell na sua primeira linha de código. O código funcionará corretamente sem ele.

    
por 11.09.2013 / 23:37