shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Chamada de Função dentro do Xargs


From: Julio C. Neves
Subject: Re: [shell-script] Chamada de Função dentro do Xargs
Date: Tue, 29 Sep 2009 11:50:41 -0300

O bash -c abre um subshell e por isso não vê a função que está declarada no
shell pai. O melhor seria deixar o copydir como uma função externa e colocar
a sua chamada da seguinte forma:

echo "$perfis" |xargs -i bash -c ". copydir {} {}.backup.$data"

Não conheço esta função, mas caso cada path da variável $perfis não esteja
sozinho em uma linha, é provável que isso não funcione, pois gerará algo
como:

copydir arq1 arq2 arq3 arq1 arq2 arq3.backup.$data

veja:

$ perfis="arq1 arq2 arq3"
$ echo "$perfis" | xargs -i echo {}.sufixo
arq1 arq2 arq3.sufixo
$ perfis="arq1
> arq2
> arq3"
$ echo "$perfis" | xargs -i echo {}.sufixo
arq1.sufixo
arq2.sufixo
arq3.sufixo

Obs: a opção -l do xargs só se usa qdo o marcador de posição tem de ser
diferente de {}, pois este é o padrão (default) da opção -i.

Abraços,
Julio
Cursos de Shell e Zenity em 2 fins de semana?
- Em SP ligue (11) 2125-4747;
- Em DF ligue (61) 3223-3000 (próxima turma de 1 a 4/10);
- No RJ ligue (21) 2561-0867;
- Turmas fechadas em outras cidades ligue (21) 8112-9988.


2009/9/29 César Vianna <address@hidden>

>
>
> Tenho um script que contém a funcção copydir (desenvolvida pelo Aurélio
> Marinho Jargas)
>
> #bin/bash
> function copydir(){
>
> #corpo a funcao...
>
> }
>
> #Uso a função com o xargs. A variável perfil contem paths de diretórios
> echo $perfis|xargs -I "{}" bash -c "copydir '{}' '{}.backup.$data'"
>
> O resultado é
> bash: copydir: comando não encontrado
>
> Se eu colocar somente
>
> copydir origem destino
>
> Funciona normalmente...
>
> --
> César Vianna
> -------------------
> Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às
> unidades; os agenciamentos móveis aos sistemas.
> Gilles Deleuze & Felix Guattari
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]