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>
--------------------------------------------------------------------------------------------------------------