Comportamento estranho do script Bash - o script não funciona como comandos manuais

0

Então, isso é estranho. Quando executo comandos manualmente, tudo funciona bem, mas quando eu executo um script com comandos idênticos, recebo uma saída de erro estranha.

Isso é o que eu executo:

lxc list;
for elem in {001..005}; do lxc stop ubuntu-"$elem"; done;
for elem in {001..005}; do lxc start ubuntu-"$elem"; done;
lxc list;

Quando faço isso manualmente, tudo funciona sem erro e meu comando tem um efeito real. As máquinas LXD estão sendo paradas e iniciadas novamente.

No entanto, se eu escrever isso como um script:

#!/bin/bash
lxc list;
for elem in {001..005}; do lxc stop ubuntu-"$elem"; done;
for elem in {001..005}; do lxc start ubuntu-"$elem"; done;
lxc list;

Eu recebo erros (muito pouco informativos, eu acho que não encontrar máquinas para executar o comando).

error: not found
error: not found

Para ambos os comandos de loop.

Sou novo aqui, por favor, avise.

    
por Anthony 22.07.2015 / 19:49

1 resposta

2

{001..005} é um recurso bash mas você está executando o seu script com sh e no Ubuntu sh é dash não bash.

Portanto, não execute seu script com sh script.sh , mas com bash script.sh ou simplesmente ./script.sh , pois você tem #!/bin/bash no início de seu script.

    
por 22.07.2015 / 20:40