Somar uma variável e repetir todo o comando [RESOLVIDO]

1. Somar uma variável e repetir todo o comando [RESOLVIDO]

Douglas Ritter
dstter

(usa Slackware)

Enviado em 11/07/2011 - 15:57h

Preciso de um script em shell script ou ao menos da confirmação se dá pra fazer que é o seguinte


dd if=/dev/zero of=file.7z.002 bs=n count=1
7z t file.7z.001


O que eu preciso é de um script que fique repetindo (o que está a cima) e em cada vez troque o valor de n por 1 e depois por 2 e depois 3 e assim infinitamente ou se der pra colocar um limite pode ser 1073741824.

Acredito que não seja nada complexo, se o der para explicar pro shell que é só pra ele trocar pelo proximo número e assim por diante, alguém pode escrever isso pra mim? (ou ao menos me falar se em shell script dá, que ai eu vou tentar aprender)

Se eu for ficar fazendo na mão eu vou levar anos, no minimo.

Também pode ser em outra linguagem, desde que dê esses comandos.


  


2. MELHOR RESPOSTA

Marcos Paulo Ferreira
daemonio

(usa Slackware)

Enviado em 11/07/2011 - 22:07h

Deve ser algum erro em tentar alocar um espaço de memória grande. Aí tem que ver se é o shell que retornou isso ou o dd.

Como alternativa use um loop infinito para que o shell nao precise gerar os 1073741824 elementos do loop:

n=1
while true
do
dd if=/dev/zero of=file.7z.002 bs=$n count=1
7z t file.7z.001
n=$((n+1))
done


Repare que é um loop infinito, quando precisar parar aperte ctrl+c.

Refaça os testes e veja se o erro continua.

Abraços
t+

3. Re: Somar uma variável e repetir todo o comando [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 11/07/2011 - 16:33h


for n in {1..1073741824}
do
dd if=/dev/zero of=file.7z.002 bs=$n count=1
7z t file.7z.001
done


Teste "ae"...


4. ./.ronin

Douglas Ritter
dstter

(usa Slackware)

Enviado em 11/07/2011 - 21:53h

Muito obrigado por postar, eu testei e apareceu isso:

root@slax:/mnt/sda2# ./script

malloc: itos.c:50: assertion botched
malloc: block on free list clobbered

O que será que pode ter sido?


5. Re: Somar uma variável e repetir todo o comando [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 12/07/2011 - 04:57h

Aproveitando a excelente dica do amigo @daemonio.

Adicionei a idéia um indicador de progresso pois este script vai demorar a pacas para terminar, graças ao numero de passos.


#!/bin/bash
# since 2011/07/12
# more http://sekysu.blogspot.com

function _execute()
{
NR=$1
dd if=/dev/zero of=file.7z.002 bs="${NR}" count=1
7z t file.7z.001
}

PASSO=0
FIM=1073741824

TITLE='Nome do script'
MSG='Por favor, aguarde o fim do processamento ou tecle Crtl + C para abortar.'

while [ $PASSO != $FIM ]
do
let PASSO=PASSO+1
_execute $PASSO &&
echo $(( ( $PASSO * 100 ) / $FIM )) ||
exit 2

done | dialog --title "$TITLE" --guage "$MSG" 10 80






6. Re: Somar uma variável e repetir todo o comando [RESOLVIDO]

Douglas Ritter
dstter

(usa Slackware)

Enviado em 12/07/2011 - 11:06h

Puxa ai pessoal, muito obrigado ai pelas duas ajudas, eu vou tentar agora e ver o que eu consigo. Realmente, hehe, ai ai vai demorar pra buuuro :O

to até com medo de estragar meu hd com todo o trabalho que vai gerar pra ele.

Vamos ver no que dá e quanto tempo leva :)

Muito obrigado a todos ai mesmo ^^


7. daemonio

Douglas Ritter
dstter

(usa Slackware)

Enviado em 14/07/2011 - 22:54h

estou apenas para lhe agradecer pelo script, funcionou direitinho e fez o que eu queria. Quando ele criar o arquivo com o tamanho certo em bytes, o 7zip entra pedindo a senha e eu posso ver quantas bytes que tá faltando :)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts