Aguarde o processo terminar antes de ir para a próxima linha no shell script

6

Eu tenho um script que fiz para criar um backup. Eu preciso ter certeza de que o backup está pronto antes de executar o comando /home/ftp.sh . Como posso fazer isso? Eu uso o CentOS 5.6

#!/bin/bash
tar -Pcf /home/temp_backup.tar /home/myfiles/
wait %%
/home/ftp.sh
    
por Hujeplet 10.12.2011 / 01:01

2 respostas

9

Você já está fazendo isso.

Esperar um comando terminar é o comportamento normal do shell. (Tente digitar sleep 5 em uma janela de comandos.) A única vez que não acontece é quando você anexa & ao comando, ou quando o comando em si faz algo para efetivamente fazer o seu próprio plano ( o último é um pouco de simplificação).

Você pode excluir o comando wait %% do seu script; provavelmente apenas produz uma mensagem de erro como wait: %%: no such job . (Pergunta: isso realmente imprime uma mensagem dessas?)

Você tem alguma evidência de que o comando tar não está sendo concluído antes do início do comando /home/ftp.sh ?

A propósito, é um pouco estranho ter outras coisas além dos diretórios pessoais dos usuários sob /home .

(Eu sei que a maior parte disso já foi abordada nos comentários, mas achei que deveria haver uma resposta real.)

    
por 10.12.2011 / 10:47
-2

Você pode usar:

wait $!

Exclua o wait %% do seu script.

    
por 29.03.2013 / 18:57