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: phfbettega
Subject: Re: [shell-script] Re: SED - como ir selecionando trechos de acordo com um padrão
Date: Wed, 21 Sep 2016 10:37:46 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0

Olá Mestre Julio, vc tem razão, falta um espaço ali :) às vezes os emails da 
lista
vem com fonte monoespaçada e às vezes não, pra pegar esses detalhes sem fonte
monoespaçada é uma dificuldade. (sem contar que a indentação também vai pro 
espaço)
Abraços Paulo

On 21-09-2016 10:18, 'Julio C. Neves' address@hidden [shell-script] wrote:


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*
*
Próximos cursos de Shell*
*Cidade        LocalPeríodo*
*
​
**São Paulo 4Linux 
<https://www.4linux.com.br/curso/programacao-em-shell-script>05
*-09/12*
***
Dou treinamento de /Shell/em qualquer cidade.
Para mais detalhes, me mande um e-mail <mailto:address@hidden>.


Em 21 de setembro de 2016 09:48, Édnei Rodrigues address@hidden
<mailto:address@hidden> [shell-script] <address@hidden
<mailto: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
    <http://gnu.org/licenses/gpl.html>>


    O que significa aquele || ?


    Em 20 de set de 2016 8:50 AM, "'Julio C. Neves' address@hidden 
<mailto:address@hidden>
    [shell-script]" <address@hidden <mailto:address@hidden>> 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 <mailto:address@hidden> 
[shell-script]"
        <address@hidden <mailto:address@hidden>> 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 <mailto: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 <mailto:address@hidden>
            > ----------------------------------------------------------



--------------------------------------------------------------------------------------------------------------
Enviado por: "Julio C. Neves" <address@hidden>
--------------------------------------------------------------------------------------------------------------


reply via email to

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