Gravar arquivos em diretório [RESOLVIDO]

1. Gravar arquivos em diretório [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 29/11/2009 - 20:46h

Olá! Sou novo na comunidade e estou começando com Shell.
Estou fazendo um programa que cria arquivos dentro de um diretório específico. Como exemplo abaixo:

#!/bin/bash
dir=`pwd`
touch $dir/arquivo00
touch $dir/arquivo01
touch $dir/arquivo02

e assim por diante.

Quando executo o programa na linha de comando dentro do diretório que ele está, seu funcionamenteo é normal, o problema é quando executo ele pelo cron.
Tenho esse programa chamado arquivo.sh dentro do diretório /root/scripts/. Então faço a chamada no /etc/crontab e coloco o local de execução dele, os arquivos estão sendo criados dentro do diretório /. Sei que posso colocar o caminho para ele ser gravado diretamente na variável, mas tenho mais ou menos 250 diretórios para gravar esses arquivos e não queria ter que colocar o programa dentro de seu diretório e ainda ter que setar a variável do diretório dele um a um.

Como posso fazer com que ele grave no diretório que o arquivo.sh está sendo executado?

Desde já agradeço a ajuda.

oguerino.


  


2. Re: Gravar arquivos em diretório [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 30/11/2009 - 13:26h

Cara, de onde vem esta lista???
Talvez seja o caso de ler os diretórios desta lista, ai ... vc nem precisa copiar o script para os diretórios, basta executar, ele lê o $dir no arquivo e ai fica fácil!!! O que vc acha?

ficaria algo do tipo:

while read dir
do
touch $dir/arquivo00
touch $dir/arquivo01
touch $dir/arquivo02
done < lista_de_diretorios


3. Re: Gravar arquivos em diretório [RESOLVIDO]

Magno Lima
magnolinux

(usa Debian)

Enviado em 30/11/2009 - 13:52h

Seu mini script esta errado.

o comando pwd, verifica o caminho que vc esta. no caso o scrip vai criar as pastas no dretorio corrente...

vc tem que colocar o seguinte.

dir=/Diretorio_criação_arquivos

Entendeu amigo..

Flw...


4. Re: Gravar arquivos em diretório [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 30/11/2009 - 14:36h

fdmarp vlw pela resposta!
Acho que não me expressei bem na pergunta, mas já achei a solução.
"
tenho um script q roda em "n" diretórios. Tipo /dir1/script.sh, /dir2/script.sh, /dir3/script.sh e dir"n". O meu script é iniciado pelo crontab. Ele fica assim
30 15 * * * root /dir1/arquivo.sh
30 15 * * * root /dir2/arquivo.sh
30 15 * * * root /dir3/arquivo.sh

O código do arquivo.sh é assim:
#!/bin/bash
dir=`pwd`
touch $dir/arquivo00
touch $dir/arquivo01
touch $dir/arquivo02

Onde imaginei que dir=`pwd` pegaria o diretório que o script é armazenado/executado(os diretórios citados acima). Mas por minha infelicidade ele começou a gravar os arquivos dentro do /. Falando com um amigo(vlw Guilherme) e ele me ajudou da seguinte maneira.

na variável dir colocar assim:
dir=`dirname $0`

E assim a variável dir armazenará o diretório onde o script está sendo executado.

Quando o crontab executar o script /dir1/arquivo.sh o valor da variável dir será o diretório que o script é executado.

OGUERINO










Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts