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

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

Re: [shell-script] Re: SED - como ir selecionando trechos de acordo com


From: Julio C. Neves
Subject: Re: [shell-script] Re: SED - como ir selecionando trechos de acordo com um padrão
Date: Wed, 21 Sep 2016 10:18:44 -0300

Ednei,
[[ ... ]] é um cmd e como tal, deve ter um espaço em branco os separando de cada um dos operandos que estão no seu interior, pois eles são os parâmetros que vc está passando para o cmd test.

No código que vc mandou me pareceu não haver espaços antes dos ]], em duas linhas.

Abcs,
Julio
@juliobash

P
róximos cursos de Shell
Cidade         Local Período
São Paulo 4Linux 05
-09/12
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 21 de setembro de 2016 09:48, Édnei Rodrigues address@hidden [shell-script] <address@hidden> escreveu:
 

Obrigado pela sugestão!

É bem interessante a proposta.
Eu testei a fórmula e houve um erro:

-rwxr-xr-x 1 rluser radiantlogic  249 Sep 21 09:33 status_connector.sh

[root@app1ssosite006h bin]# ./status_connector.sh

./status_connector.sh: line 6: unexpected token `newline', conditional binary operator expected

./status_connector.sh: line 6: syntax error near `{'

./status_connector.sh: line 6: ` {'

[root@app1ssosite006h bin]# cat status_connector.sh 

#!/bin/bash

cat listas_conectores.txt | while read linha;

do

[[ "$linha" =~ ^$]] ||

{

if [[ "$linha" =~ ^\.]]; then

top_nome="${linha#.}"

continue

else

echo "topology.sh printConnectorStatus $top_nome ${linha#*:}"

fi;}

done

[root@app1ssosite006h bin]# 

[root@app1ssosite006h bin]# bash --version

bash --version

GNU bash, version 4.2.46(1)-release (x86_64-redhat-linux-gnu)

Copyright (C) 2011 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>


O que significa aquele || ?


Em 20 de set de 2016 8:50 AM, "'Julio C. Neves' address@hidden [shell-script]" <address@hidden.br> escreveu:
 

Se vc estiver usando Bourne Shell, o sh (mas não é esse sh do Linux, é o du Unix), ele não reconhece função declarada com:
funtion funcao
{
...
}
Reconhece somente com a sintaxe
funcao ()
{
...
}

Após declarar uma função, é a prática muito boa fazer:
export -f funcao


Em 19 de set de 2016 17:33, "address@hidden [shell-script]" <address@hidden.br> escreveu:
 

Olá Itamar, valeu o feedback :)
É verdade, vc tem razão, não pensei na portabilidade.
Se for um shell com menos recursos acho que a solução seria
isolar o bloco com sed e pegar as informações com grep, ou usar
awk direto que faz o serviço dos dois.
Um tempo atrás teve uma dúvida na lista sobre um shell que não reconhecia função,
devia ser um dos shells do busybox.
Esse é um exercício e tanto, fazer os scripts compatíveis com bash 3 ou 2 pra trás.
Abraços Paulo

On 19-09-2016 15:36, address@hidden [shell-script] wrote:
>
>
> A solução do Paulo é perfeita.
>
> Simples e objetiva e atende o que deseja pela sua descrição.
>
> Para o que vc deseja o Sed acredito não ter suporte para executar comandos assim, e em puro bash vai direto ao
> ponto.
>
> A única ressalva que faço é verificar a versão do Shell que está usando, pois o Paulo usou recursos recentes e
> dependendo da empresa, essa atualização pode ser negligenciada, e os recursos sugeridos podem não funcionar da
> forma como estão, mas é possível trocar por uso de "test", "sed" ou "grep".
>
> E além de tudo usando esse recursos built-in's, em epecial do Bash há um ganho de performance sem comparação.
>
> []'s
> Itamar
>
>
> ----------------------------------------------------------
> Enviado por: address@hidden
> ----------------------------------------------------------



reply via email to

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