Erros de script de shell?

3

Estou tentando criar um script de shell bash interativo para facilitar a instalação e a configuração de um servidor de e-mail postfix, mas eles ainda digitam os comandos e, em seguida, o shell os executa, mas continuo recebendo esse erro e não Não sei porque.

Essas duas linhas estão me dando o erro "Muitos argumentos"

if test $VAR1 = sudo apt-get install postfix

e

until test $VAR1 = sudo apt-get install postfix

Obrigado.

    
por Steve 08.09.2013 / 00:33

1 resposta

4

Você precisa citar os argumentos para test para impedi-los de "quebrar" no espaço em branco, ou seja, se

$ var1="sudo apt-get install postfix"

então

$ if test $var1 = sudo apt-get install postfix; then echo "Match"; fi
bash: test: too many arguments

mas

$ if test "$var1" = "sudo apt-get install postfix"; then echo "Match"; fi
Match

O mesmo se aplica se você usar a construção [ ... ] test

if [ "$var1" = "sudo apt-get install postfix" ]; then echo "Match"; fi

Como um aparte, é recomendado não usar letras maiúsculas para os nomes das variáveis - as letras maiúsculas geralmente são reservadas para as variáveis do sistema.

    
por steeldriver 08.09.2013 / 00:54