Você está complicando isso.
Se zip
sair com um status de saída que reflita sucesso ou falha, você pode simplesmente fazer
$ zip -r foo.zip . && mv foo.zip mydir && rm -rf *
No entanto, espero que mydir
não esteja localizado no diretório atual ou seja excluído pelo rm -rf *
. Em geral, ao usar rm -rf
, eu pensaria duas e três vezes antes de colocar um *
depois dele !! Na verdade, posso contar o número de vezes que fiz ( rm -rf *
) no ano passado nos dedos de uma mão. Eu nunca colocaria em um script.
Caminho mais seguro (supondo que mydir
seja realmente um caminho para algum outro lugar que não o diretório atual):
$ zip -r --move --test foo.zip . && mv foo.zip mydir
Ou até mesmo
$ zip -r --move --test mydir/foo.zip .
Observe o uso de .
(ponto) em vez de *
. Com *
, qualquer arquivo com -
como o primeiro caractere em seu nome seria interpretado como uma opção de linha de comando para zip
. Teste isso criando um arquivo chamado --encrypt
, por exemplo:
$ touch -- --encrypt
$ zip -r --move --test ../test.zip *
Enter password:
$ rm -- --encrypt