Questão Ordem de execução de instruções em um shell de script


Aqui está uma parte do meu script test.sh:

#!/bin/bash

tar -cf $name.tar $name && pbzip2 $name.tar
echo "[$1: Waiting..]

Por favor, eu tenho uma pergunta. A execução da segunda instrução "echo" é logo após a criação do arquivo .tar.bz2? como eu vejo não. Eu vejo que eu tenho apenas o diretório tar e a instrução echo é lançada!

Alguma explicação, por favor? Muito obrigado.


1


origem


Se você está tentando dizer que o echo é executado, mas você não vê o resultado de pbzip2então o primeiro tar não retorna 0 (e depois pbzip2 não é executado de todo), ou o pbzip2 comando está errado ou comprime o arquivo "no lugar" (sobrescrevendo o original .tar arquivo, em vez de criar um novo arquivo com um .bz2 extensão). - Arjan
eco é executado, mas você não vê o resultado de pbzip2 É isso aí, eu tenho que enviar este arquivo pbzip2 para um nó de destino, mas é enviado corrupto - user1568840


Respostas:


o echo comando não é executado enquanto o o empacotamento prévio e o comando de compressão não são feitos.

Significado, sem saída até que o arquivo seja compactado e compactado. Se você quiser que algum tipo de saída apareça quando for iniciado e quando estiver pronto, use:

#!/bin/bash

echo "[$1: Packing]"
tar -cf $name.tar $name && pbzip2 $name.tar
echo "[$1: Done]"

1



"echo é executado, mas você não vê o resultado de pbzip2" É isso aí, eu tenho que enviar este arquivo pbzip2 para um nó de destino, mas é enviado corrupto - user1568840