Discussion:
[shell-script] Múltiplas variáveis em um loop
arkanadd@yahoo.com [shell-script]
2016-11-23 11:54:28 UTC
Permalink
Bom dia pessoal,


Preciso incrementar 3 variáveis até um valor máximo.


Ex:


Var1 = $"1" #Varia de 1 a 14
Var2 = $"1" #Varia de 1 a 8
Var3 = $"1" #Varia de 1 a 64


As variáveis são agrupadas em $Var1/$Var2/$Var3 e para cada valor um comando será executado.


1/1/1
Command = add 1/1/1
1/1/2
Command = add 1/1/2


...


1/1/64
Command = add 1/1/64


Quando a Var3 chegar em 64 a Var2 será acrescentado em 1, ficando:


1/2/1
Command = add 1/2/1
1/2/2
Command = add 1/2/2


...


1/2/64
Command = add 1/2/64


A Var2 é incrementada até 8 e após isso a Var1 é incrementada em 1, refazendo todo o loop com a Var2 e a Var3, sendo que o último comando será add 14/8/64.


Tentei algumas formas com while e for, mas sempre falhava na alteração da Var2 e Var1.


Alguma ideia simples para esta questão?


Devo utilizar em conjunto com o expect, pois quero implementar algumas saídas pre-definidas para o retorno dos comandos.


Agradeço pela atenção.
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2016-11-23 13:27:56 UTC
Permalink
Seria isso?
for ((var1=1;var1<=14; var1++))
{
echo "Primeiro loop $var1/$var2/$var3"
for ((var2=1;var2<=8;var2++))
{
echo "Segundo loop $var1/$var2/$var3"
for ((var3=1; var3<64; var3++))
{
echo terceiro loop $var1/$var2/$var3
}
}
}

Para conferir, ponha um read após o 1o. e o 2o. echo, assim:
for ((var1=1;var1<=14; var1++))
{
echo "Primeiro loop $var1/$var2/$var3"
for ((var2=1;var2<=8;var2++)); read -p " Tecle ENTER"
{
echo "Segundo loop $var1/$var2/$var3"; read -p " Tecle ENTER"
for ((var3=1; var3<64; var3++))
{
echo terceiro loop $var1/$var2/$var3
}
}
}

Abcs,
Julio
*@juliobash*

*Próximos cursos de Shell*
*Cidade Local Perí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.
Post by ***@yahoo.com [shell-script]
Bom dia pessoal,
Preciso incrementar 3 variáveis até um valor máximo.
Var1 = $"1" #Varia de 1 a 14
Var2 = $"1" #Varia de 1 a 8
Var3 = $"1" #Varia de 1 a 64
As variáveis são agrupadas em $Var1/$Var2/$Var3 e para cada valor um
comando será executado.
1/1/1
Command = add 1/1/1
1/1/2
Command = add 1/1/2
...
1/1/64
Command = add 1/1/64
1/2/1
Command = add 1/2/1
1/2/2
Command = add 1/2/2
...
1/2/64
Command = add 1/2/64
A Var2 é incrementada até 8 e após isso a Var1 é incrementada em 1,
refazendo todo o loop com a Var2 e a Var3, sendo que o último comando será
add 14/8/64.
Tentei algumas formas com while e for, mas sempre falhava na alteração da
Var2 e Var1.
Alguma ideia simples para esta questão?
Devo utilizar em conjunto com o expect, pois quero implementar algumas
saídas pre-definidas para o retorno dos comandos.
Agradeço pela atenção.
Arkan Add arkanadd@yahoo.com [shell-script]
2016-11-23 20:04:11 UTC
Permalink
Muito obrigado Julio, 
     Exatamente o que eu precisava. Ainda estou com alguns problemas com a implementação dele no expect e pssh. Assim que resolver as pendência posto o resultado aqui.     Mais uma vez meu muito obrigado.

On Wednesday, November 23, 2016 11:28 AM, "'Julio C. Neves' ***@gmail.com [shell-script]" <shell-***@yahoogrupos.com.br> wrote:


  Seria isso?for ((var1=1;var1<=14; var1++))
{    echo "Primeiro loop $var1/$var2/$var3"    for ((var2=1;var2<=8;var2++))    {        echo "Segundo loop $var1/$var2/$var3"        for ((var3=1; var3<64; var3++))        {            echo terceiro loop $var1/$var2/$var3        }    }}
Para conferir, ponha um read após o 1o. e o 2o. echo, assim:for ((var1=1;var1<=14; var1++))
{    echo "Primeiro loop $var1/$var2/$var3"    for ((var2=1;var2<=8;var2++)); read -p "     Tecle ENTER"    {        echo "Segundo loop $var1/$var2/$var3"; read -p "     Tecle ENTER"        for ((var3=1; var3<64; var3++))        {            echo terceiro loop $var1/$var2/$var3        }    }}
Abcs,***@juliobash
Próximos cursos de ShellCidade         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 23 de novembro de 2016 09:54, ***@yahoo.com [shell-script] <shell-***@yahoogrupos.com.br> escreveu:

  Bom dia pessoal, 
     Preciso incrementar 3 variáveis até um valor máximo.
Ex:
Var1 = $"1" #Varia de 1 a 14Var2 = $"1"  #Varia de 1 a 8Var3 = $"1" #Varia de 1 a 64
As variáveis são agrupadas em $Var1/$Var2/$Var3 e para cada valor um comando será executado.
1/1/1Command = add 1/1/11/1/2Command = add 1/1/2
...
1/1/64 Command = add 1/1/64
Quando a Var3 chegar em 64 a Var2 será acrescentado em 1, ficando:
1/2/1Command = add 1/2/11/2/2Command = add 1/2/2
...
1/2/64Command = add 1/2/64
A Var2 é incrementada até 8 e após isso a Var1 é incrementada em 1, refazendo todo o loop com a Var2 e a Var3, sendo que o último comando será add 14/8/64.
Tentei algumas formas com while e for, mas sempre falhava na alteração da Var2 e Var1.
Alguma ideia simples para esta questão?
Devo utilizar em conjunto com o expect, pois quero implementar algumas saídas pre-definidas para o retorno dos comandos.
Agradeço pela atenção.





#yiv7510500627 #yiv7510500627 -- #yiv7510500627ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv7510500627 #yiv7510500627ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv7510500627 #yiv7510500627ygrp-mkp #yiv7510500627hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv7510500627 #yiv7510500627ygrp-mkp #yiv7510500627ads {margin-bottom:10px;}#yiv7510500627 #yiv7510500627ygrp-mkp .yiv7510500627ad {padding:0 0;}#yiv7510500627 #yiv7510500627ygrp-mkp .yiv7510500627ad p {margin:0;}#yiv7510500627 #yiv7510500627ygrp-mkp .yiv7510500627ad a {color:#0000ff;text-decoration:none;}#yiv7510500627 #yiv7510500627ygrp-sponsor #yiv7510500627ygrp-lc {font-family:Arial;}#yiv7510500627 #yiv7510500627ygrp-sponsor #yiv7510500627ygrp-lc #yiv7510500627hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv7510500627 #yiv7510500627ygrp-sponsor #yiv7510500627ygrp-lc .yiv7510500627ad {margin-bottom:10px;padding:0 0;}#yiv7510500627 #yiv7510500627actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv7510500627 #yiv7510500627activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv7510500627 #yiv7510500627activity span {font-weight:700;}#yiv7510500627 #yiv7510500627activity span:first-child {text-transform:uppercase;}#yiv7510500627 #yiv7510500627activity span a {color:#5085b6;text-decoration:none;}#yiv7510500627 #yiv7510500627activity span span {color:#ff7900;}#yiv7510500627 #yiv7510500627activity span .yiv7510500627underline {text-decoration:underline;}#yiv7510500627 .yiv7510500627attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv7510500627 .yiv7510500627attach div a {text-decoration:none;}#yiv7510500627 .yiv7510500627attach img {border:none;padding-right:5px;}#yiv7510500627 .yiv7510500627attach label {display:block;margin-bottom:5px;}#yiv7510500627 .yiv7510500627attach label a {text-decoration:none;}#yiv7510500627 blockquote {margin:0 0 0 4px;}#yiv7510500627 .yiv7510500627bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv7510500627 .yiv7510500627bold a {text-decoration:none;}#yiv7510500627 dd.yiv7510500627last p a {font-family:Verdana;font-weight:700;}#yiv7510500627 dd.yiv7510500627last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv7510500627 dd.yiv7510500627last p span.yiv7510500627yshortcuts {margin-right:0;}#yiv7510500627 div.yiv7510500627attach-table div div a {text-decoration:none;}#yiv7510500627 div.yiv7510500627attach-table {width:400px;}#yiv7510500627 div.yiv7510500627file-title a, #yiv7510500627 div.yiv7510500627file-title a:active, #yiv7510500627 div.yiv7510500627file-title a:hover, #yiv7510500627 div.yiv7510500627file-title a:visited {text-decoration:none;}#yiv7510500627 div.yiv7510500627photo-title a, #yiv7510500627 div.yiv7510500627photo-title a:active, #yiv7510500627 div.yiv7510500627photo-title a:hover, #yiv7510500627 div.yiv7510500627photo-title a:visited {text-decoration:none;}#yiv7510500627 div#yiv7510500627ygrp-mlmsg #yiv7510500627ygrp-msg p a span.yiv7510500627yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv7510500627 .yiv7510500627green {color:#628c2a;}#yiv7510500627 .yiv7510500627MsoNormal {margin:0 0 0 0;}#yiv7510500627 o {font-size:0;}#yiv7510500627 #yiv7510500627photos div {float:left;width:72px;}#yiv7510500627 #yiv7510500627photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv7510500627 #yiv7510500627photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv7510500627 #yiv7510500627reco-category {font-size:77%;}#yiv7510500627 #yiv7510500627reco-desc {font-size:77%;}#yiv7510500627 .yiv7510500627replbq {margin:4px;}#yiv7510500627 #yiv7510500627ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv7510500627 #yiv7510500627ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv7510500627 #yiv7510500627ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv7510500627 #yiv7510500627ygrp-mlmsg select, #yiv7510500627 input, #yiv7510500627 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv7510500627 #yiv7510500627ygrp-mlmsg pre, #yiv7510500627 code {font:115% monospace;}#yiv7510500627 #yiv7510500627ygrp-mlmsg * {line-height:1.22em;}#yiv7510500627 #yiv7510500627ygrp-mlmsg #yiv7510500627logo {padding-bottom:10px;}#yiv7510500627 #yiv7510500627ygrp-msg p a {font-family:Verdana;}#yiv7510500627 #yiv7510500627ygrp-msg p#yiv7510500627attach-count span {color:#1E66AE;font-weight:700;}#yiv7510500627 #yiv7510500627ygrp-reco #yiv7510500627reco-head {color:#ff7900;font-weight:700;}#yiv7510500627 #yiv7510500627ygrp-reco {margin-bottom:20px;padding:0px;}#yiv7510500627 #yiv7510500627ygrp-sponsor #yiv7510500627ov li a {font-size:130%;text-decoration:none;}#yiv7510500627 #yiv7510500627ygrp-sponsor #yiv7510500627ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv7510500627 #yiv7510500627ygrp-sponsor #yiv7510500627ov ul {margin:0;padding:0 0 0 8px;}#yiv7510500627 #yiv7510500627ygrp-text {font-family:Georgia;}#yiv7510500627 #yiv7510500627ygrp-text p {margin:0 0 1em 0;}#yiv7510500627 #yiv7510500627ygrp-text tt {font-size:120%;}#yiv7510500627 #yiv7510500627ygrp-vital ul li:last-child {border-right:none !important;}#yiv7510500627
itamarnet@yahoo.com.br [shell-script]
2016-11-23 21:23:39 UTC
Permalink
Arkan Add
Só pra complementar e peloo Julio que curte alguns features do Bash mais atual vou dar um pitaco que com certeza ele conhece.
Ao invés de usar 3 variáveis poderia usar essa construção.
Vou limitar o exemplo com 2 opção na primeira parte, 3 na segunda e 4 na terceira:

$ for termo in $(echo {1..2}/{1..3}/{1..4});do echo "$termo"; done

Essa solução serve?

[]'s
Itamar
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2016-11-24 11:23:11 UTC
Permalink
Solução super bem sacada! Gostei muito. Se der tempo (já foi para a editora
há uma semana), ainda sai com teu nome na 11a. edição do livro de Shell.

Vc já está em umas 5 ou 6 citações.

Abcs,
Julio
*@juliobash*

*Próximos cursos de Shell*
*Cidade Local Perí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.
Post by ***@yahoo.com.br [shell-script]
Arkan Add
Só pra complementar e peloo Julio que curte alguns features do Bash mais
atual vou dar um pitaco que com certeza ele conhece.
Ao invés de usar 3 variáveis poderia usar essa construção.
$ for termo in $(echo {1..2}/{1..3}/{1..4});do echo "$termo"; done
Essa solução serve?
[]'s
Itamar
Alfredo Casanova atcasanova@gmail.com [shell-script]
2016-11-24 12:34:44 UTC
Permalink
Tinha também aquele truque de um colega da lista que pode ser adaptado:

$ var1={1,2}
$ var2={1,2,3}
$ var3={1,2,3,4}
$ eval echo $var1/$var2/$var3
1/1/1 1/1/2 1/1/3 1/1/4 1/2/1 1/2/2 1/2/3 1/2/4 1/3/1 1/3/2 1/3/3 1/3/4
2/1/1 2/1/2 2/1/3 2/1/4 2/2/1 2/2/2 2/2/3 2/2/4 2/3/1 2/3/2 2/3/3 2/3/4



On Thu, Nov 24, 2016 at 9:45 AM 'Julio C. Neves' ***@gmail.com
[shell-script] <shell-***@yahoogrupos.com.br> wrote:



Solução super bem sacada! Gostei muito. Se der tempo (já foi para a editora
há uma semana), ainda sai com teu nome na 11a. edição do livro de Shell.

Vc já está em umas 5 ou 6 citações.


Abcs,
Julio
*@juliobash*

*Próximos cursos de Shell*
*Cidade Local Perí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 <***@gmail.com>.


Em 23 de novembro de 2016 19:23, ***@yahoo.com.br [shell-script] <
shell-***@yahoogrupos.com.br> escreveu:



Arkan Add
Só pra complementar e peloo Julio que curte alguns features do Bash mais
atual vou dar um pitaco que com certeza ele conhece.
Ao invés de usar 3 variáveis poderia usar essa construção.
Vou limitar o exemplo com 2 opção na primeira parte, 3 na segunda e 4 na
terceira:

$ for termo in $(echo {1..2}/{1..3}/{1..4});do echo "$termo"; done

Essa solução serve?

[]'s
Itamar
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2016-11-24 12:34:54 UTC
Permalink
Aê Itamar, mandei o seguinte para a editora para ver se ainda dá para
incluir na 11a. edição do meu livro:

=================================================

Um colega postou a sua dúvida na lista de *Shell *do *Yahoo*:

Tenho três variáveis, $var1, $var2 e $var3. Quero gerar todos os valores
possíveis no formato $var1/$var2/$var3, sendo que:

$var1 varia de 1 a 14;

$var2 varia de 1 a 8;

$var3 varia de 1 a 64.

Fui o primeiro a responder e logo de cara, sugeri o mais óbvio, isto é,
três comandos for encadeados, fazendo assim:

*for ((var1=1;var1<=14; var1++))*

*{*

*echo $var1/$var2/$var3*

*for ((var2=1;var2<=8;var2++))*

*{*

*echo $var1/$var2/$var3*

*for ((var3=1; var3<64; var3++))*

*{*

*echo $var1/$var2/$var3*

*}*

*}*

*}*

Logo depois, o Itamar Santos de Souza manda essa preciosidade:

*for termo in $(echo {1..14}/{1..8}/{1..64})*

*do*

*echo "$termo"*

*done*

Matou a pau! Dessa forma, ele não usou nenhuma variável e fez somente um
for, onde a execução é feita de trás para a frente, isto é, a cada vez que
o 3o índice chega a 64, o 2o é incrementado em 1 e este, por sua vez,
quando chega a 8, incrementa o 1o e o *loop* terminará a execução quando
este índice chegar a 14.

Mas roubando a sua ideia de usar expansão de chaves, ainda consegui gerar
um one-liner, cujo tempo de execução é o menor dentre as 3 opções citadas.
Veja:

*echo {1..14}/{1..8}/{1..64} | tr ' ' '\n'*

Pessoal, coloquei estes exemplos para enfatizar o que eu sempre digo:
"nunca pergunte se uma determinada tarefa pode ser implementada em *Shell*.
A pergunta correta é: qual é a melhor forma de se implementar esta tarefa
em *Shell*".

=====================================

Espero que vc não se importe de ser citado

OBS: O servidor de e-mail comeu toda a indentação que fiz :(

Abcs,
Julio
*@juliobash*

*Próximos cursos de Shell*
*Cidade Local Perí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.
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Solução super bem sacada! Gostei muito. Se der tempo (já foi para a
editora há uma semana), ainda sai com teu nome na 11a. edição do livro de
Shell.
Vc já está em umas 5 ou 6 citações.
Abcs,
Julio
*Próximos cursos de Shell*
*Cidade Local Perí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.
Post by ***@yahoo.com.br [shell-script]
Arkan Add
Só pra complementar e peloo Julio que curte alguns features do Bash mais
atual vou dar um pitaco que com certeza ele conhece.
Ao invés de usar 3 variáveis poderia usar essa construção.
$ for termo in $(echo {1..2}/{1..3}/{1..4});do echo "$termo"; done
Essa solução serve?
[]'s
Itamar
Arkan Add arkanadd@yahoo.com [shell-script]
2016-11-24 13:03:42 UTC
Permalink
Simples e eficaz. Obrigado pessoal.Simplesmente incrível.


On Thursday, November 24, 2016 10:35 AM, "'Julio C. Neves' ***@gmail.com [shell-script]" <shell-***@yahoogrupos.com.br> wrote:


  Aê Itamar, mandei o seguinte para a editora para ver se ainda dá para incluir na 11a. edição do meu livro:
=================================================
Um colega postou a sua dúvida na lista de Shelldo Yahoo:Tenho três variáveis,$var1, $var2 e $var3. Quero gerartodos os valores possíveis no formato$var1/$var2/$var3, sendo que:$var1varia de 1 a14;$var2varia de 1 a 8;$var3varia de 1 a64.Fui o primeiro a responder e logo de cara, sugerio mais óbvio, isto é, três comandos forencadeados, fazendo assim:for((var1=1;var1<=14; var1++)){ echo$var1/$var2/$var3 for((var2=1;var2<=8;var2++)) { echo$var1/$var2/$var3 for((var3=1; var3<64; var3++)) { echo$var1/$var2/$var3 } }}Logo depois, o Itamar Santos de Souza manda essapreciosidade:fortermo in $(echo {1..14}/{1..8}/{1..64})do echo"$termo"doneMatou a pau! Dessa forma, ele não usou nenhumavariável e fez somente um for, onde aexecução é feita de trás para a frente, isto é, a cada vez que o3o índice chega a 64, o 2oé incrementado em 1 e este, por suavez, quando chega a 8, incrementa o 1oe o loop terminará a execuçãoquando este índice chegar a 14.Mas roubando a sua ideia de usar expansão dechaves, ainda consegui gerar um one-liner, cujo tempo de execução éo menor dentre as 3 opções citadas. Veja:echo{1..14}/{1..8}/{1..64} | tr ' ' '\n'Pessoal, coloquei estes exemplos para enfatizar oque eu sempre digo: "nunca pergunte se uma determinada tarefapode ser implementada em Shell. Apergunta correta é: qual é a melhor forma de se implementar estatarefa em Shell".=====================================Espero que vc não se importe de ser citadoOBS: O servidor de e-mail comeu toda a indentação que fiz :(
Abcs,***@juliobash
Próximos cursos de ShellCidade         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 24 de novembro de 2016 09:23, Julio C. Neves <***@gmail.com> escreveu:

Solução super bem sacada! Gostei muito. Se der tempo (já foi para a editora há uma semana), ainda sai com teu nome na 11a. edição do livro de Shell.
Vc já está em umas 5 ou 6 citações.
Abcs,***@juliobash
Próximos cursos de ShellCidade         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 23 de novembro de 2016 19:23, ***@yahoo.com.br [shell-script] <shell-***@yahoogrupos.com. br> escreveu:

  Arkan Add
Só pra complementar e peloo Julio que curte alguns features do Bash mais atual vou dar um pitaco que com certeza ele conhece.
Ao invés de usar 3 variáveis poderia usar essa construção.
Vou limitar o exemplo com 2 opção na primeira parte, 3 na segunda e 4 na terceira:

$ for termo in $(echo {1..2}/{1..3}/{1..4});do echo "$termo"; done

Essa solução serve?

[]'s
Itamar



#yiv1892075392 #yiv1892075392 -- #yiv1892075392ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv1892075392 #yiv1892075392ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv1892075392 #yiv1892075392ygrp-mkp #yiv1892075392hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv1892075392 #yiv1892075392ygrp-mkp #yiv1892075392ads {margin-bottom:10px;}#yiv1892075392 #yiv1892075392ygrp-mkp .yiv1892075392ad {padding:0 0;}#yiv1892075392 #yiv1892075392ygrp-mkp .yiv1892075392ad p {margin:0;}#yiv1892075392 #yiv1892075392ygrp-mkp .yiv1892075392ad a {color:#0000ff;text-decoration:none;}#yiv1892075392 #yiv1892075392ygrp-sponsor #yiv1892075392ygrp-lc {font-family:Arial;}#yiv1892075392 #yiv1892075392ygrp-sponsor #yiv1892075392ygrp-lc #yiv1892075392hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv1892075392 #yiv1892075392ygrp-sponsor #yiv1892075392ygrp-lc .yiv1892075392ad {margin-bottom:10px;padding:0 0;}#yiv1892075392 #yiv1892075392actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv1892075392 #yiv1892075392activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv1892075392 #yiv1892075392activity span {font-weight:700;}#yiv1892075392 #yiv1892075392activity span:first-child {text-transform:uppercase;}#yiv1892075392 #yiv1892075392activity span a {color:#5085b6;text-decoration:none;}#yiv1892075392 #yiv1892075392activity span span {color:#ff7900;}#yiv1892075392 #yiv1892075392activity span .yiv1892075392underline {text-decoration:underline;}#yiv1892075392 .yiv1892075392attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv1892075392 .yiv1892075392attach div a {text-decoration:none;}#yiv1892075392 .yiv1892075392attach img {border:none;padding-right:5px;}#yiv1892075392 .yiv1892075392attach label {display:block;margin-bottom:5px;}#yiv1892075392 .yiv1892075392attach label a {text-decoration:none;}#yiv1892075392 blockquote {margin:0 0 0 4px;}#yiv1892075392 .yiv1892075392bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv1892075392 .yiv1892075392bold a {text-decoration:none;}#yiv1892075392 dd.yiv1892075392last p a {font-family:Verdana;font-weight:700;}#yiv1892075392 dd.yiv1892075392last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv1892075392 dd.yiv1892075392last p span.yiv1892075392yshortcuts {margin-right:0;}#yiv1892075392 div.yiv1892075392attach-table div div a {text-decoration:none;}#yiv1892075392 div.yiv1892075392attach-table {width:400px;}#yiv1892075392 div.yiv1892075392file-title a, #yiv1892075392 div.yiv1892075392file-title a:active, #yiv1892075392 div.yiv1892075392file-title a:hover, #yiv1892075392 div.yiv1892075392file-title a:visited {text-decoration:none;}#yiv1892075392 div.yiv1892075392photo-title a, #yiv1892075392 div.yiv1892075392photo-title a:active, #yiv1892075392 div.yiv1892075392photo-title a:hover, #yiv1892075392 div.yiv1892075392photo-title a:visited {text-decoration:none;}#yiv1892075392 div#yiv1892075392ygrp-mlmsg #yiv1892075392ygrp-msg p a span.yiv1892075392yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv1892075392 .yiv1892075392green {color:#628c2a;}#yiv1892075392 .yiv1892075392MsoNormal {margin:0 0 0 0;}#yiv1892075392 o {font-size:0;}#yiv1892075392 #yiv1892075392photos div {float:left;width:72px;}#yiv1892075392 #yiv1892075392photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv1892075392 #yiv1892075392photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv1892075392 #yiv1892075392reco-category {font-size:77%;}#yiv1892075392 #yiv1892075392reco-desc {font-size:77%;}#yiv1892075392 .yiv1892075392replbq {margin:4px;}#yiv1892075392 #yiv1892075392ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv1892075392 #yiv1892075392ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv1892075392 #yiv1892075392ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv1892075392 #yiv1892075392ygrp-mlmsg select, #yiv1892075392 input, #yiv1892075392 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv1892075392 #yiv1892075392ygrp-mlmsg pre, #yiv1892075392 code {font:115% monospace;}#yiv1892075392 #yiv1892075392ygrp-mlmsg * {line-height:1.22em;}#yiv1892075392 #yiv1892075392ygrp-mlmsg #yiv1892075392logo {padding-bottom:10px;}#yiv1892075392 #yiv1892075392ygrp-msg p a {font-family:Verdana;}#yiv1892075392 #yiv1892075392ygrp-msg p#yiv1892075392attach-count span {color:#1E66AE;font-weight:700;}#yiv1892075392 #yiv1892075392ygrp-reco #yiv1892075392reco-head {color:#ff7900;font-weight:700;}#yiv1892075392 #yiv1892075392ygrp-reco {margin-bottom:20px;padding:0px;}#yiv1892075392 #yiv1892075392ygrp-sponsor #yiv1892075392ov li a {font-size:130%;text-decoration:none;}#yiv1892075392 #yiv1892075392ygrp-sponsor #yiv1892075392ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv1892075392 #yiv1892075392ygrp-sponsor #yiv1892075392ov ul {margin:0;padding:0 0 0 8px;}#yiv1892075392 #yiv1892075392ygrp-text {font-family:Georgia;}#yiv1892075392 #yiv1892075392ygrp-text p {margin:0 0 1em 0;}#yiv1892075392 #yiv1892075392ygrp-text tt {font-size:120%;}#yiv1892075392 #yiv1892075392ygrp-vital ul li:last-child {border-right:none !important;}#yiv1892075392
itamarnet@yahoo.com.br [shell-script]
2016-11-24 13:50:04 UTC
Permalink
Grande Meste Júlio

Eu que agradeço a referência, e jamais me importaria


Aliás, o mérito é da lista como um todo, pois sempre há alguém com uma solução para um problema igualmente interessante.


Apredi e aprendo demais com todos aqui, e na medida que posso retribuo o ensinamento que recebi.


Nem precisa perguntar, qualquer citação feita por ti Júlio eu considero como uma grande honra.


E a sugestão do Casanova deu também é outro forma muito legal de solucionar o problema.


Isso só corrobora o seu dito muito comum e que todos já conhecem!


Valeu!


[]'s
Itamar
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2016-11-24 16:34:27 UTC
Permalink
Eu não havia visto a solução do Casanova, por sinal, brilhante tb e que
incluirei, mas já havia me referido a ele em outro pedaço e vou repetir, pq
é um macete legal:
============================================

Já tinha mandado a 10ª edição deste livro para a editora quando o Alfredo
Casanova, colega da lista *s**hell**-script* do *yahoo groups*, mandou a
seguinte dica para a nossa lista:

"Só compartilhando uma funçãozinha que fiz aqui pra desenhar caixas de
mensagem (só funciona para mensagens com uma linha, se alguém quiser
alterar, fique à vontade)"

E nos brindou com esse código:

*function DrawBox*

*{*

*string="$*";*

*tamanho=${#string}*

*tput setf 3; printf "\e(0\x6c\e(B"*

*for i in $(seq $tamanho)*

*do printf "\e(0\x71\e(B"*

*done*

*printf "\e(0\x6b\e(B\n"; tput sgr0;*

*tput setf 3; printf "\e(0\x78\e(B"*

*tput setf 4; tput bold; echo -n $string; tput sgr0*

*tput setf 3; printf "\e(0\x78\e(B\n"; tput sgr0;*

*tput setf 3; printf "\e(0\x6d\e(B"*

*for i in $(seq $tamanho)*

*do printf "\e(0\x71\e(B"*

*done*

*printf "\e(0\x6a\e(B\n"; tput sgr0;*

*}*

Seu uso seria da seguinte forma:

*$ DrawBox Qualquer frase que caiba no terminal*

*======================================*

Mas não deu tempo de sair na 10a. edição e está saindo nessa.

Toda vez que vejo algo muito bom na lista, publico com o nome do autor,
para que outros possam usufruir estes macetes.


Abcs,
Julio
*@juliobash*

*Próximos cursos de Shell*
*Cidade Local Perí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.
Post by ***@yahoo.com.br [shell-script]
Grande Meste Júlio
Eu que agradeço a referência, e jamais me importaria
Aliás, o mérito é da lista como um todo, pois sempre há alguém com uma
solução para um problema igualmente interessante.
Apredi e aprendo demais com todos aqui, e na medida que posso retribuo o
ensinamento que recebi.
Nem precisa perguntar, qualquer citação feita por ti Júlio eu considero
como uma grande honra.
E a sugestão do Casanova deu também é outro forma muito legal de
solucionar o problema.
Isso só corrobora o seu dito muito comum e que todos já conhecem!
Valeu!
[]'s
Itamar
Alfredo Casanova atcasanova@gmail.com [shell-script]
2016-11-24 19:05:12 UTC
Permalink
Na verdade aquela solução é do Thiago Peczne**** (não sei escrever o
sobrenome e não achei na lista), só lembrei e adaptei!

De toda forma, é sempre motivo de orgulho ser citado pelo Mestre!
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Eu não havia visto a solução do Casanova, por sinal, brilhante tb e que
incluirei, mas já havia me referido a ele em outro pedaço e vou repetir, pq
============================================
Já tinha mandado a 10ª edição deste livro para a editora quando o Alfredo
Casanova, colega da lista *s**hell**-script* do *yahoo groups*, mandou a
"Só compartilhando uma funçãozinha que fiz aqui pra desenhar caixas de
mensagem (só funciona para mensagens com uma linha, se alguém quiser
alterar, fique à vontade)"
*function DrawBox*
*{*
*string="$*";*
*tamanho=${#string}*
*tput setf 3; printf "\e(0\x6c\e(B"*
*for i in $(seq $tamanho)*
*do printf "\e(0\x71\e(B"*
*done*
*printf "\e(0\x6b\e(B\n"; tput sgr0;*
*tput setf 3; printf "\e(0\x78\e(B"*
*tput setf 4; tput bold; echo -n $string; tput sgr0*
*tput setf 3; printf "\e(0\x78\e(B\n"; tput sgr0;*
*tput setf 3; printf "\e(0\x6d\e(B"*
*for i in $(seq $tamanho)*
*do printf "\e(0\x71\e(B"*
*done*
*printf "\e(0\x6a\e(B\n"; tput sgr0;*
*}*
*$ DrawBox Qualquer frase que caiba no terminal*
*======================================*
Mas não deu tempo de sair na 10a. edição e está saindo nessa.
Toda vez que vejo algo muito bom na lista, publico com o nome do autor,
para que outros possam usufruir estes macetes.
Abcs,
Julio
*Próximos cursos de Shell*
*Cidade Local Perí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.
Grande Meste Júlio
Eu que agradeço a referência, e jamais me importaria
Aliás, o mérito é da lista como um todo, pois sempre há alguém com uma
solução para um problema igualmente interessante.
Apredi e aprendo demais com todos aqui, e na medida que posso retribuo o
ensinamento que recebi.
Nem precisa perguntar, qualquer citação feita por ti Júlio eu considero
como uma grande honra.
E a sugestão do Casanova deu também é outro forma muito legal de
solucionar o problema.
Isso só corrobora o seu dito muito comum e que todos já conhecem!
Valeu!
[]'s
Itamar
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2016-11-24 19:19:18 UTC
Permalink
alias Pacman="Tiago Peczenyj"

Tb já foi citado (como quase todos os mais antigos/ativos da lista), mas
achei que essa era sua...

Abcs,
Julio
*@juliobash*

*Próximos cursos de Shell*
*Cidade Local Perí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.
Post by Alfredo Casanova ***@gmail.com [shell-script]
Na verdade aquela solução é do Thiago Peczne**** (não sei escrever o
sobrenome e não achei na lista), só lembrei e adaptei!
De toda forma, é sempre motivo de orgulho ser citado pelo Mestre!
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Eu não havia visto a solução do Casanova, por sinal, brilhante tb e que
incluirei, mas já havia me referido a ele em outro pedaço e vou repetir, pq
============================================
Já tinha mandado a 10ª edição deste livro para a editora quando o Alfredo
Casanova, colega da lista *s**hell**-script* do *yahoo groups*, mandou a
"Só compartilhando uma funçãozinha que fiz aqui pra desenhar caixas de
mensagem (só funciona para mensagens com uma linha, se alguém quiser
alterar, fique à vontade)"
*function DrawBox*
*{*
*string="$*";*
*tamanho=${#string}*
*tput setf 3; printf "\e(0\x6c\e(B"*
*for i in $(seq $tamanho)*
*do printf "\e(0\x71\e(B"*
*done*
*printf "\e(0\x6b\e(B\n"; tput sgr0;*
*tput setf 3; printf "\e(0\x78\e(B"*
*tput setf 4; tput bold; echo -n $string; tput sgr0*
*tput setf 3; printf "\e(0\x78\e(B\n"; tput sgr0;*
*tput setf 3; printf "\e(0\x6d\e(B"*
*for i in $(seq $tamanho)*
*do printf "\e(0\x71\e(B"*
*done*
*printf "\e(0\x6a\e(B\n"; tput sgr0;*
*}*
*$ DrawBox Qualquer frase que caiba no terminal*
*======================================*
Mas não deu tempo de sair na 10a. edição e está saindo nessa.
Toda vez que vejo algo muito bom na lista, publico com o nome do autor,
para que outros possam usufruir estes macetes.
Abcs,
Julio
*Próximos cursos de Shell*
*Cidade Local Perí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.
Grande Meste Júlio
Eu que agradeço a referência, e jamais me importaria
Aliás, o mérito é da lista como um todo, pois sempre há alguém com uma
solução para um problema igualmente interessante.
Apredi e aprendo demais com todos aqui, e na medida que posso retribuo o
ensinamento que recebi.
Nem precisa perguntar, qualquer citação feita por ti Júlio eu considero
como uma grande honra.
E a sugestão do Casanova deu também é outro forma muito legal de
solucionar o problema.
Isso só corrobora o seu dito muito comum e que todos já conhecem!
Valeu!
[]'s
Itamar
Alfredo Casanova atcasanova@gmail.com [shell-script]
2016-11-24 19:24:34 UTC
Permalink
Foi algo que você chamou de "rotatório Peczenyj" no Papo de Botequim! Pode
procurar que está por lá.
No exemplo era um loop pra iterar todas as opções do chmod
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
alias Pacman="Tiago Peczenyj"
Tb já foi citado (como quase todos os mais antigos/ativos da lista), mas
achei que essa era sua...
Abcs,
Julio
*Próximos cursos de Shell*
*Cidade Local Perí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.
Na verdade aquela solução é do Thiago Peczne**** (não sei escrever o
sobrenome e não achei na lista), só lembrei e adaptei!
De toda forma, é sempre motivo de orgulho ser citado pelo Mestre!
Eu não havia visto a solução do Casanova, por sinal, brilhante tb e que
incluirei, mas já havia me referido a ele em outro pedaço e vou repetir, pq
============================================
Já tinha mandado a 10ª edição deste livro para a editora quando o Alfredo
Casanova, colega da lista *s**hell**-script* do *yahoo groups*, mandou a
"Só compartilhando uma funçãozinha que fiz aqui pra desenhar caixas de
mensagem (só funciona para mensagens com uma linha, se alguém quiser
alterar, fique à vontade)"
*function DrawBox*
*{*
*string="$*";*
*tamanho=${#string}*
*tput setf 3; printf "\e(0\x6c\e(B"*
*for i in $(seq $tamanho)*
*do printf "\e(0\x71\e(B"*
*done*
*printf "\e(0\x6b\e(B\n"; tput sgr0;*
*tput setf 3; printf "\e(0\x78\e(B"*
*tput setf 4; tput bold; echo -n $string; tput sgr0*
*tput setf 3; printf "\e(0\x78\e(B\n"; tput sgr0;*
*tput setf 3; printf "\e(0\x6d\e(B"*
*for i in $(seq $tamanho)*
*do printf "\e(0\x71\e(B"*
*done*
*printf "\e(0\x6a\e(B\n"; tput sgr0;*
*}*
*$ DrawBox Qualquer frase que caiba no terminal*
*======================================*
Mas não deu tempo de sair na 10a. edição e está saindo nessa.
Toda vez que vejo algo muito bom na lista, publico com o nome do autor,
para que outros possam usufruir estes macetes.
Abcs,
Julio
*Próximos cursos de Shell*
*Cidade Local Perí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.
Grande Meste Júlio
Eu que agradeço a referência, e jamais me importaria
Aliás, o mérito é da lista como um todo, pois sempre há alguém com uma
solução para um problema igualmente interessante.
Apredi e aprendo demais com todos aqui, e na medida que posso retribuo o
ensinamento que recebi.
Nem precisa perguntar, qualquer citação feita por ti Júlio eu considero
como uma grande honra.
E a sugestão do Casanova deu também é outro forma muito legal de
solucionar o problema.
Isso só corrobora o seu dito muito comum e que todos já conhecem!
Valeu!
[]'s
Itamar
Alfredo Casanova atcasanova@gmail.com [shell-script]
2016-11-24 19:25:11 UTC
Permalink
Achei!
http://br.gnome.org/TWikiBar/TWikiBarBirinaite#Rotat_rio_Peczenyj
Post by Alfredo Casanova ***@gmail.com [shell-script]
Foi algo que você chamou de "rotatório Peczenyj" no Papo de Botequim! Pode
procurar que está por lá.
No exemplo era um loop pra iterar todas as opções do chmod
alias Pacman="Tiago Peczenyj"
Tb já foi citado (como quase todos os mais antigos/ativos da lista), mas
achei que essa era sua...
Abcs,
Julio
*Próximos cursos de Shell*
*Cidade Local Perí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.
Na verdade aquela solução é do Thiago Peczne**** (não sei escrever o
sobrenome e não achei na lista), só lembrei e adaptei!
De toda forma, é sempre motivo de orgulho ser citado pelo Mestre!
Eu não havia visto a solução do Casanova, por sinal, brilhante tb e que
incluirei, mas já havia me referido a ele em outro pedaço e vou repetir, pq
============================================
Já tinha mandado a 10ª edição deste livro para a editora quando o Alfredo
Casanova, colega da lista *s**hell**-script* do *yahoo groups*, mandou a
"Só compartilhando uma funçãozinha que fiz aqui pra desenhar caixas de
mensagem (só funciona para mensagens com uma linha, se alguém quiser
alterar, fique à vontade)"
*function DrawBox*
*{*
*string="$*";*
*tamanho=${#string}*
*tput setf 3; printf "\e(0\x6c\e(B"*
*for i in $(seq $tamanho)*
*do printf "\e(0\x71\e(B"*
*done*
*printf "\e(0\x6b\e(B\n"; tput sgr0;*
*tput setf 3; printf "\e(0\x78\e(B"*
*tput setf 4; tput bold; echo -n $string; tput sgr0*
*tput setf 3; printf "\e(0\x78\e(B\n"; tput sgr0;*
*tput setf 3; printf "\e(0\x6d\e(B"*
*for i in $(seq $tamanho)*
*do printf "\e(0\x71\e(B"*
*done*
*printf "\e(0\x6a\e(B\n"; tput sgr0;*
*}*
*$ DrawBox Qualquer frase que caiba no terminal*
*======================================*
Mas não deu tempo de sair na 10a. edição e está saindo nessa.
Toda vez que vejo algo muito bom na lista, publico com o nome do autor,
para que outros possam usufruir estes macetes.
Abcs,
Julio
*Próximos cursos de Shell*
*Cidade Local Perí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.
Grande Meste Júlio
Eu que agradeço a referência, e jamais me importaria
Aliás, o mérito é da lista como um todo, pois sempre há alguém com uma
solução para um problema igualmente interessante.
Apredi e aprendo demais com todos aqui, e na medida que posso retribuo o
ensinamento que recebi.
Nem precisa perguntar, qualquer citação feita por ti Júlio eu considero
como uma grande honra.
E a sugestão do Casanova deu também é outro forma muito legal de
solucionar o problema.
Isso só corrobora o seu dito muito comum e que todos já conhecem!
Valeu!
[]'s
Itamar
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2016-11-25 13:00:29 UTC
Permalink
​​
​​
Fala Casanova,
o rotatório do Pacman foi a base da sua resposta, entendido. Mas a citação
no meu livro que já havia feito a seu nome, foi sobre uma contribuição sua
na lista, na qual vc postou uma função que recebia um texto e colocava uma
moldura semigráfica em torno do texto passado. Veja ele e o exemplo:

function DrawBox
{
string="$*";
tamanho=${#string}
tput setf 3; printf "\e(0\x6c\e(B"
for i in $(seq $tamanho)
do
printf "\e(0\x71\e(B"
done
printf "\e(0\x6b\e(B\n"; tput sgr0;
tput setf 3; printf "\e(0\x78\e(B"
tput setf 4; tput bold; echo -n $string; tput sgr0
tput setf 3; printf "\e(0\x78\e(B\n"; tput sgr0;
tput setf 3; printf "\e(0\x6d\e(B"
for i in $(seq $tamanho)
do
printf "\e(0\x71\e(B"
done
printf "\e(0\x6a\e(B\n"; tput sgr0;
}

$ DrawBox Frase para mostrar para a lista
┌───────────────────────────────┐
│Frase para mostrar para a lista│
└───────────────────────────────┘

​Só que essa caixa é azul (tput setf 3) e as letras são vermelhas, com
ênfase (tput setf 4; tput bold).

E esses printf maluco representam:

*O printf*

*Produz*

*\e(0\x6c\e(B*

┌

*\e(0\x71\e(B*

─

*\e(0\x6b\e(B*

┐

*\e(0\x78\e(B*

│

*\e(0\x6d\e(B*

└

*\e(0\x6a\e(B*

┘


​Depois, como sempre, sugeri que o for que ele usou para fazer as linhas
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
*for i in $(seq $tamanho)*
*do**​ ​**printf "\e(0\x71\e(B"*
*done*
*printf -v linha "%${tamanho}s" ' '*
*printf -v traco "\e(0\x71\e(B"**echo -n ${linha// /$traco}*
​F
​icando:

function DrawBox
{
string="$*";
tamanho=${#string}
tput setf 3; printf "\e(0\x6c\e(B"
printf -v linha "%${tamanho}s" ' '
printf -v traco "\e(0\x71\e(B"
echo -n ${linha// /$traco}
printf "\e(0\x6b\e(B\n"; tput sgr0;
tput setf 3; printf "\e(0\x78\e(B"
tput setf 4; tput bold; echo -n $string; tput sgr0
tput setf 3; printf "\e(0\x78\e(B\n"; tput sgr0;
tput setf 3; printf "\e(0\x6d\e(B"
printf -v linha "%${tamanho}s" ' '
printf -v traco "\e(0\x71\e(B"
echo -n ${linha// /$traco}
printf "\e(0\x6a\e(B\n"; tput sgr0;
}

​
Abcs,
Julio
*@juliobash*

*Próximos cursos de Shell*
*Cidade Local Perí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.
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Achei!
http://br.gnome.org/TWikiBar/TWikiBarBirinaite#Rotat_rio_Peczenyj
Post by Alfredo Casanova ***@gmail.com [shell-script]
Foi algo que você chamou de "rotatório Peczenyj" no Papo de Botequim!
Pode procurar que está por lá.
No exemplo era um loop pra iterar todas as opções do chmod
alias Pacman="Tiago Peczenyj"
Tb já foi citado (como quase todos os mais antigos/ativos da lista), mas
achei que essa era sua...
Abcs,
Julio
*Próximos cursos de Shell*
*Cidade Local Perí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.
Na verdade aquela solução é do Thiago Peczne**** (não sei escrever o
sobrenome e não achei na lista), só lembrei e adaptei!
De toda forma, é sempre motivo de orgulho ser citado pelo Mestre!
Eu não havia visto a solução do Casanova, por sinal, brilhante tb e que
incluirei, mas já havia me referido a ele em outro pedaço e vou repetir, pq
============================================
Já tinha mandado a 10ª edição deste livro para a editora quando o Alfredo
Casanova, colega da lista *s**hell**-script* do *yahoo groups*, mandou a
"Só compartilhando uma funçãozinha que fiz aqui pra desenhar caixas de
mensagem (só funciona para mensagens com uma linha, se alguém quiser
alterar, fique à vontade)"
*function DrawBox*
*{*
*string="$*";*
*tamanho=${#string}*
*tput setf 3; printf "\e(0\x6c\e(B"*
*for i in $(seq $tamanho)*
*do printf "\e(0\x71\e(B"*
*done*
*printf "\e(0\x6b\e(B\n"; tput sgr0;*
*tput setf 3; printf "\e(0\x78\e(B"*
*tput setf 4; tput bold; echo -n $string; tput sgr0*
*tput setf 3; printf "\e(0\x78\e(B\n"; tput sgr0;*
*tput setf 3; printf "\e(0\x6d\e(B"*
*for i in $(seq $tamanho)*
*do printf "\e(0\x71\e(B"*
*done*
*printf "\e(0\x6a\e(B\n"; tput sgr0;*
*}*
*$ DrawBox Qualquer frase que caiba no terminal*
*======================================*
Mas não deu tempo de sair na 10a. edição e está saindo nessa.
Toda vez que vejo algo muito bom na lista, publico com o nome do autor,
para que outros possam usufruir estes macetes.
Abcs,
Julio
*Próximos cursos de Shell*
*Cidade Local Perí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.
Grande Meste Júlio
Eu que agradeço a referência, e jamais me importaria
Aliás, o mérito é da lista como um todo, pois sempre há alguém com uma
solução para um problema igualmente interessante.
Apredi e aprendo demais com todos aqui, e na medida que posso retribuo o
ensinamento que recebi.
Nem precisa perguntar, qualquer citação feita por ti Júlio eu considero
como uma grande honra.
E a sugestão do Casanova deu também é outro forma muito legal de
solucionar o problema.
Isso só corrobora o seu dito muito comum e que todos já conhecem!
Valeu!
[]'s
Itamar
Kleyton Maia kleytonmaia@yahoo.com.br [shell-script]
2016-11-25 13:20:48 UTC
Permalink
Bom dia , 
Pessoal tenho um script que derruba usuários do banco progress em linux, Ele funciona corretamente para 01 conexão. Porem por vezes quando o usuário tem mais de 01 conexão esse comando me retorna o nome do usuário duas vezes e com isso ele não derruba ninguém... pois fica "joa joao" que é diferente de "joao"
Ex:
dlc= comando para derrubarbanco = nome do banconome = nome do usuario que digitou
unomebanco=$("$dlc" "$1"/"$banco" -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty|sort | grep $nome |awk '{print $1}')
A pergunta seria como fazer pra esse awk me retornar somente 01 nome e nao os dois que ele acha nas conexões ? 

Obrigado pela força. _________________
Cordialmente;

Kleyton Maia

#yiv2070676965 #yiv2070676965 -- #yiv2070676965ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv2070676965 #yiv2070676965ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv2070676965 #yiv2070676965ygrp-mkp #yiv2070676965hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv2070676965 #yiv2070676965ygrp-mkp #yiv2070676965ads {margin-bottom:10px;}#yiv2070676965 #yiv2070676965ygrp-mkp .yiv2070676965ad {padding:0 0;}#yiv2070676965 #yiv2070676965ygrp-mkp .yiv2070676965ad p {margin:0;}#yiv2070676965 #yiv2070676965ygrp-mkp .yiv2070676965ad a {color:#0000ff;text-decoration:none;}#yiv2070676965 #yiv2070676965ygrp-sponsor #yiv2070676965ygrp-lc {font-family:Arial;}#yiv2070676965 #yiv2070676965ygrp-sponsor #yiv2070676965ygrp-lc #yiv2070676965hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv2070676965 #yiv2070676965ygrp-sponsor #yiv2070676965ygrp-lc .yiv2070676965ad {margin-bottom:10px;padding:0 0;}#yiv2070676965 #yiv2070676965actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv2070676965 #yiv2070676965activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv2070676965 #yiv2070676965activity span {font-weight:700;}#yiv2070676965 #yiv2070676965activity span:first-child {text-transform:uppercase;}#yiv2070676965 #yiv2070676965activity span a {color:#5085b6;text-decoration:none;}#yiv2070676965 #yiv2070676965activity span span {color:#ff7900;}#yiv2070676965 #yiv2070676965activity span .yiv2070676965underline {text-decoration:underline;}#yiv2070676965 .yiv2070676965attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv2070676965 .yiv2070676965attach div a {text-decoration:none;}#yiv2070676965 .yiv2070676965attach img {border:none;padding-right:5px;}#yiv2070676965 .yiv2070676965attach label {display:block;margin-bottom:5px;}#yiv2070676965 .yiv2070676965attach label a {text-decoration:none;}#yiv2070676965 blockquote {margin:0 0 0 4px;}#yiv2070676965 .yiv2070676965bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv2070676965 .yiv2070676965bold a {text-decoration:none;}#yiv2070676965 dd.yiv2070676965last p a {font-family:Verdana;font-weight:700;}#yiv2070676965 dd.yiv2070676965last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv2070676965 dd.yiv2070676965last p span.yiv2070676965yshortcuts {margin-right:0;}#yiv2070676965 div.yiv2070676965attach-table div div a {text-decoration:none;}#yiv2070676965 div.yiv2070676965attach-table {width:400px;}#yiv2070676965 div.yiv2070676965file-title a, #yiv2070676965 div.yiv2070676965file-title a:active, #yiv2070676965 div.yiv2070676965file-title a:hover, #yiv2070676965 div.yiv2070676965file-title a:visited {text-decoration:none;}#yiv2070676965 div.yiv2070676965photo-title a, #yiv2070676965 div.yiv2070676965photo-title a:active, #yiv2070676965 div.yiv2070676965photo-title a:hover, #yiv2070676965 div.yiv2070676965photo-title a:visited {text-decoration:none;}#yiv2070676965 div#yiv2070676965ygrp-mlmsg #yiv2070676965ygrp-msg p a span.yiv2070676965yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv2070676965 .yiv2070676965green {color:#628c2a;}#yiv2070676965 .yiv2070676965MsoNormal {margin:0 0 0 0;}#yiv2070676965 o {font-size:0;}#yiv2070676965 #yiv2070676965photos div {float:left;width:72px;}#yiv2070676965 #yiv2070676965photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv2070676965 #yiv2070676965photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv2070676965 #yiv2070676965reco-category {font-size:77%;}#yiv2070676965 #yiv2070676965reco-desc {font-size:77%;}#yiv2070676965 .yiv2070676965replbq {margin:4px;}#yiv2070676965 #yiv2070676965ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv2070676965 #yiv2070676965ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv2070676965 #yiv2070676965ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv2070676965 #yiv2070676965ygrp-mlmsg select, #yiv2070676965 input, #yiv2070676965 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv2070676965 #yiv2070676965ygrp-mlmsg pre, #yiv2070676965 code {font:115% monospace;}#yiv2070676965 #yiv2070676965ygrp-mlmsg * {line-height:1.22em;}#yiv2070676965 #yiv2070676965ygrp-mlmsg #yiv2070676965logo {padding-bottom:10px;}#yiv2070676965 #yiv2070676965ygrp-msg p a {font-family:Verdana;}#yiv2070676965 #yiv2070676965ygrp-msg p#yiv2070676965attach-count span {color:#1E66AE;font-weight:700;}#yiv2070676965 #yiv2070676965ygrp-reco #yiv2070676965reco-head {color:#ff7900;font-weight:700;}#yiv2070676965 #yiv2070676965ygrp-reco {margin-bottom:20px;padding:0px;}#yiv2070676965 #yiv2070676965ygrp-sponsor #yiv2070676965ov li a {font-size:130%;text-decoration:none;}#yiv2070676965 #yiv2070676965ygrp-sponsor #yiv2070676965ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv2070676965 #yiv2070676965ygrp-sponsor #yiv2070676965ov ul {margin:0;padding:0 0 0 8px;}#yiv2070676965 #yiv2070676965ygrp-text {font-family:Georgia;}#yiv2070676965 #yiv2070676965ygrp-text p {margin:0 0 1em 0;}#yiv2070676965 #yiv2070676965ygrp-text tt {font-size:120%;}#yiv2070676965 #yiv2070676965ygrp-vital ul li:last-child {border-right:none !important;}#yiv2070676965
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2016-11-25 13:41:37 UTC
Permalink
Mande um exemplo completo de retorno para podermos avaliar a resposta.

Se vc tem, como diz, "joa joao", é mais complicado, mas se vc tem "joao
joao" é mole:

$ echo joao joao | tr ' ' '\n' | sort | uniq
joao

Mas se sua saída for:
joao
joao

Nem precisa do tr, mas se for joao da silva joao da silva, complica.

Como vc vê, cada caso é um caso. Então sem um exemplo real, fica difícil


Abcs,
Julio
*@juliobash*

*Próximos cursos de Shell*
*Cidade Local Perí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.
Post by Kleyton Maia ***@yahoo.com.br [shell-script]
Bom dia ,
Pessoal tenho um script que derruba usuários do banco progress em linux,
Ele funciona corretamente para 01 conexão. Porem por vezes quando o
usuário tem mais de 01 conexão esse comando me retorna o nome do usuário
duas vezes e com isso ele não derruba ninguém... pois fica "joa joao" que é
diferente de "joao"
dlc= comando para derrubar
banco = nome do banco
nome = nome do usuario que digitou
unomebanco=$("$dlc" "$1"/"$banco" -C list |awk -F " " '{print $8" "$6"
"$1}'|grep -v tty|sort | grep $nome |awk '{print $1}')
A pergunta seria como fazer pra esse awk me retornar somente 01 nome e nao
os dois que ele acha nas conexões ?
Obrigado pela força.
_________________
Cordialmente;
Kleyton Maia
Kleyton Maia kleytonmaia@yahoo.com.br [shell-script]
2016-11-25 15:39:36 UTC
Permalink
Boa tarde,
Mestre julio entendi poderia ter explicado melhor me desculpe, é o segundo caso que como você escreveu:
ele retorna assim:
prompt$comandojoaojoao promptt$

[***@mclaren ~]# /usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty|sort | grep joao |awk '{print $1}'joaojoao
[***@mclaren ~]#



Obrigado! _________________
Cordialmente;

Kleyton Maia
De: "'Julio C. Neves' ***@gmail.com [shell-script]" <shell-***@yahoogrupos.com.br>
Para: "shell-***@yahoogrupos.com.br" <shell-***@yahoogrupos.com.br>
Enviadas: Sexta-feira, 25 de Novembro de 2016 11:41
Assunto: Re: [shell-script] retorno de comando para variavel

  Mande um exemplo completo de retorno para podermos avaliar a resposta. 
Se vc tem, como diz, "joa joao", é mais complicado, mas se vc tem "joao joao" é mole:
$ echo joao joao | tr ' ' '\n' | sort | uniqjoao
Mas se sua saída for:joaojoao
Nem precisa do tr, mas se for joao da silva joao da silva, complica.
Como vc vê, cada caso é um caso. Então sem um exemplo real, fica difícil

Abcs,***@juliobash
Próximos cursos de ShellCidade         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.




2016-11-25 11:20 GMT-02:00 Kleyton Maia ***@yahoo.com.br [shell-script] <shell-***@yahoogrupos.com.br>:

  Bom dia , 
Pessoal tenho um script que derruba usuários do banco progress em linux, Ele funciona corretamente para 01 conexão. Porem por vezes quando o usuário tem mais de 01 conexão esse comando me retorna o nome do usuário duas vezes e com isso ele não derruba ninguém... pois fica "joa joao" que é diferente de "joao"
Ex:
dlc= comando para derrubarbanco = nome do banconome = nome do usuario que digitou
unomebanco=$("$dlc" "$1"/"$banco" -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty|sort | grep $nome |awk '{print $1}')
A pergunta seria como fazer pra esse awk me retornar somente 01 nome e nao os dois que ele acha nas conexões ? 

Obrigado pela força. _________________
Cordialmente;

Kleyton Maia



#yiv6196296160 #yiv6196296160 -- #yiv6196296160ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv6196296160 #yiv6196296160ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv6196296160 #yiv6196296160ygrp-mkp #yiv6196296160hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv6196296160 #yiv6196296160ygrp-mkp #yiv6196296160ads {margin-bottom:10px;}#yiv6196296160 #yiv6196296160ygrp-mkp .yiv6196296160ad {padding:0 0;}#yiv6196296160 #yiv6196296160ygrp-mkp .yiv6196296160ad p {margin:0;}#yiv6196296160 #yiv6196296160ygrp-mkp .yiv6196296160ad a {color:#0000ff;text-decoration:none;}#yiv6196296160 #yiv6196296160ygrp-sponsor #yiv6196296160ygrp-lc {font-family:Arial;}#yiv6196296160 #yiv6196296160ygrp-sponsor #yiv6196296160ygrp-lc #yiv6196296160hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv6196296160 #yiv6196296160ygrp-sponsor #yiv6196296160ygrp-lc .yiv6196296160ad {margin-bottom:10px;padding:0 0;}#yiv6196296160 #yiv6196296160actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv6196296160 #yiv6196296160activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv6196296160 #yiv6196296160activity span {font-weight:700;}#yiv6196296160 #yiv6196296160activity span:first-child {text-transform:uppercase;}#yiv6196296160 #yiv6196296160activity span a {color:#5085b6;text-decoration:none;}#yiv6196296160 #yiv6196296160activity span span {color:#ff7900;}#yiv6196296160 #yiv6196296160activity span .yiv6196296160underline {text-decoration:underline;}#yiv6196296160 .yiv6196296160attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv6196296160 .yiv6196296160attach div a {text-decoration:none;}#yiv6196296160 .yiv6196296160attach img {border:none;padding-right:5px;}#yiv6196296160 .yiv6196296160attach label {display:block;margin-bottom:5px;}#yiv6196296160 .yiv6196296160attach label a {text-decoration:none;}#yiv6196296160 blockquote {margin:0 0 0 4px;}#yiv6196296160 .yiv6196296160bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv6196296160 .yiv6196296160bold a {text-decoration:none;}#yiv6196296160 dd.yiv6196296160last p a {font-family:Verdana;font-weight:700;}#yiv6196296160 dd.yiv6196296160last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv6196296160 dd.yiv6196296160last p span.yiv6196296160yshortcuts {margin-right:0;}#yiv6196296160 div.yiv6196296160attach-table div div a {text-decoration:none;}#yiv6196296160 div.yiv6196296160attach-table {width:400px;}#yiv6196296160 div.yiv6196296160file-title a, #yiv6196296160 div.yiv6196296160file-title a:active, #yiv6196296160 div.yiv6196296160file-title a:hover, #yiv6196296160 div.yiv6196296160file-title a:visited {text-decoration:none;}#yiv6196296160 div.yiv6196296160photo-title a, #yiv6196296160 div.yiv6196296160photo-title a:active, #yiv6196296160 div.yiv6196296160photo-title a:hover, #yiv6196296160 div.yiv6196296160photo-title a:visited {text-decoration:none;}#yiv6196296160 div#yiv6196296160ygrp-mlmsg #yiv6196296160ygrp-msg p a span.yiv6196296160yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv6196296160 .yiv6196296160green {color:#628c2a;}#yiv6196296160 .yiv6196296160MsoNormal {margin:0 0 0 0;}#yiv6196296160 o {font-size:0;}#yiv6196296160 #yiv6196296160photos div {float:left;width:72px;}#yiv6196296160 #yiv6196296160photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv6196296160 #yiv6196296160photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv6196296160 #yiv6196296160reco-category {font-size:77%;}#yiv6196296160 #yiv6196296160reco-desc {font-size:77%;}#yiv6196296160 .yiv6196296160replbq {margin:4px;}#yiv6196296160 #yiv6196296160ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv6196296160 #yiv6196296160ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv6196296160 #yiv6196296160ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv6196296160 #yiv6196296160ygrp-mlmsg select, #yiv6196296160 input, #yiv6196296160 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv6196296160 #yiv6196296160ygrp-mlmsg pre, #yiv6196296160 code {font:115% monospace;}#yiv6196296160 #yiv6196296160ygrp-mlmsg * {line-height:1.22em;}#yiv6196296160 #yiv6196296160ygrp-mlmsg #yiv6196296160logo {padding-bottom:10px;}#yiv6196296160 #yiv6196296160ygrp-msg p a {font-family:Verdana;}#yiv6196296160 #yiv6196296160ygrp-msg p#yiv6196296160attach-count span {color:#1E66AE;font-weight:700;}#yiv6196296160 #yiv6196296160ygrp-reco #yiv6196296160reco-head {color:#ff7900;font-weight:700;}#yiv6196296160 #yiv6196296160ygrp-reco {margin-bottom:20px;padding:0px;}#yiv6196296160 #yiv6196296160ygrp-sponsor #yiv6196296160ov li a {font-size:130%;text-decoration:none;}#yiv6196296160 #yiv6196296160ygrp-sponsor #yiv6196296160ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv6196296160 #yiv6196296160ygrp-sponsor #yiv6196296160ov ul {margin:0;padding:0 0 0 8px;}#yiv6196296160 #yiv6196296160ygrp-text {font-family:Georgia;}#yiv6196296160 #yiv6196296160ygrp-text p {margin:0 0 1em 0;}#yiv6196296160 #yiv6196296160ygrp-text tt {font-size:120%;}#yiv6196296160 #yiv6196296160ygrp-vital ul li:last-child {border-right:none !important;}#yiv6196296160
Diogo Aguiar disbaguiar@yahoo.com.br [shell-script]
2016-11-25 15:59:57 UTC
Permalink
Kleyton.

Fiz uns testes no banco progress que tenho internamente aqui na empresa e
sugiro que coloque o sort no final
/usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |awk -F " "
'{print $8" "$6" "$1}'|grep -v tty|sort | grep joao |awk '{print $1}'
joao
joao

/usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |awk -F " "
'{print $8" "$6" "$1}'|grep -v tty | grep joao |awk '{print $1}'| sort -u
joao
joao

n
Post by Kleyton Maia ***@yahoo.com.br [shell-script]
Boa tarde,
Mestre julio entendi poderia ter explicado melhor me desculpe, é o segundo
prompt$comando
joao
joao
promptt$
list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty|sort | grep joao |awk
'{print $1}'
joao
joao
Obrigado!
_________________
Cordialmente;
Kleyton Maia
------------------------------
*Enviadas:* Sexta-feira, 25 de Novembro de 2016 11:41
*Assunto:* Re: [shell-script] retorno de comando para variavel
Mande um exemplo completo de retorno para podermos avaliar a resposta.
$ echo joao joao | tr ' ' '\n' | sort | uniq
joao
joao
joao
Nem precisa do tr, mas se for joao da silva joao da silva, complica.
Como vc vê, cada caso é um caso. Então sem um exemplo real, fica difícil
Abcs,
Julio
*Próximos cursos de Shell*
*Cidade Local Perí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.
Bom dia ,
Pessoal tenho um script que derruba usuários do banco progress em linux,
Ele funciona corretamente para 01 conexão. Porem por vezes quando o
usuário tem mais de 01 conexão esse comando me retorna o nome do usuário
duas vezes e com isso ele não derruba ninguém... pois fica "joa joao" que é
diferente de "joao"
dlc= comando para derrubar
banco = nome do banco
nome = nome do usuario que digitou
unomebanco=$("$dlc" "$1"/"$banco" -C list |awk -F " " '{print $8" "$6"
"$1}'|grep -v tty|sort | grep $nome |awk '{print $1}')
A pergunta seria como fazer pra esse awk me retornar somente 01 nome e nao
os dois que ele acha nas conexões ?
Obrigado pela força.
_________________
Cordialmente;
Kleyton Maia
Kleyton Maia kleytonmaia@yahoo.com.br [shell-script]
2016-11-25 16:09:30 UTC
Permalink
Pessoal pro nome deu certo dessa forma: (com o sort no final diogo)

Porem para o codigo da conexão que vem na posição $3 do awk nao deu resultado com o sort-u ou sem vem os dois códigos ou seja a rotina se perde ainda :
[***@mclaren ~]# /usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty|sort | grep joanesetin |awk '{print $1}'| sort -ujoanesetin
[***@mclaren ~]# /usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty|sort | grep joanesetin |awk '{print $3}'| sort -u10590
Dai a rotina se perde e nao derruba ninguém ;(, alguma luz ?
_________________
Cordialmente;

Kleyton Maia

De: "Diogo Aguiar ***@yahoo.com.br [shell-script]" <shell-***@yahoogrupos.com.br>
Para: shell-***@yahoogrupos.com.br
Enviadas: Sexta-feira, 25 de Novembro de 2016 13:59
Assunto: Re: [shell-script] retorno de comando para variavel

  Kleyton.

Fiz uns testes no banco progress que tenho internamente aqui na empresa e sugiro que coloque o sort no final
/usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty|sort | grep joao |awk '{print $1}'joaojoao

/usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty | grep joao |awk '{print $1}'| sort -u
joaojoao

n

2016-11-25 13:39 GMT-02:00 Kleyton Maia ***@yahoo.com.br [shell-script] <shell-***@yahoogrupos.com.br>:

  Boa tarde,
Mestre julio entendi poderia ter explicado melhor me desculpe, é o segundo caso que como você escreveu:
ele retorna assim:
prompt$comandojoaojoao promptt$

[***@mclaren ~]# /usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty|sort | grep joao |awk '{print $1}'joaojoao
[***@mclaren ~]#



Obrigado! _________________
Cordialmente;

Kleyton Maia
De: "'Julio C. Neves' ***@gmail.com [shell-script]" <shell-***@yahoogrupos.com. br>
Para: "shell-***@yahoogrupos.com. br" <shell-***@yahoogrupos.com. br>
Enviadas: Sexta-feira, 25 de Novembro de 2016 11:41
Assunto: Re: [shell-script] retorno de comando para variavel

  Mande um exemplo completo de retorno para podermos avaliar a resposta. 
Se vc tem, como diz, "joa joao", é mais complicado, mas se vc tem "joao joao" é mole:
$ echo joao joao | tr ' ' '\n' | sort | uniqjoao
Mas se sua saída for:joaojoao
Nem precisa do tr, mas se for joao da silva joao da silva, complica.
Como vc vê, cada caso é um caso. Então sem um exemplo real, fica difícil

Abcs,***@juliobash
Próximos cursos de ShellCidade         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.




2016-11-25 11:20 GMT-02:00 Kleyton Maia ***@yahoo.com.br [shell-script] <shell-***@yahoogrupos.com. br>:

  Bom dia , 
Pessoal tenho um script que derruba usuários do banco progress em linux, Ele funciona corretamente para 01 conexão. Porem por vezes quando o usuário tem mais de 01 conexão esse comando me retorna o nome do usuário duas vezes e com isso ele não derruba ninguém... pois fica "joa joao" que é diferente de "joao"
Ex:
dlc= comando para derrubarbanco = nome do banconome = nome do usuario que digitou
unomebanco=$("$dlc" "$1"/"$banco" -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty|sort | grep $nome |awk '{print $1}')
A pergunta seria como fazer pra esse awk me retornar somente 01 nome e nao os dois que ele acha nas conexões ? 

Obrigado pela força. _________________
Cordialmente;

Kleyton Maia







#yiv1921548894 #yiv1921548894 -- #yiv1921548894ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv1921548894 #yiv1921548894ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv1921548894 #yiv1921548894ygrp-mkp #yiv1921548894hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv1921548894 #yiv1921548894ygrp-mkp #yiv1921548894ads {margin-bottom:10px;}#yiv1921548894 #yiv1921548894ygrp-mkp .yiv1921548894ad {padding:0 0;}#yiv1921548894 #yiv1921548894ygrp-mkp .yiv1921548894ad p {margin:0;}#yiv1921548894 #yiv1921548894ygrp-mkp .yiv1921548894ad a {color:#0000ff;text-decoration:none;}#yiv1921548894 #yiv1921548894ygrp-sponsor #yiv1921548894ygrp-lc {font-family:Arial;}#yiv1921548894 #yiv1921548894ygrp-sponsor #yiv1921548894ygrp-lc #yiv1921548894hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv1921548894 #yiv1921548894ygrp-sponsor #yiv1921548894ygrp-lc .yiv1921548894ad {margin-bottom:10px;padding:0 0;}#yiv1921548894 #yiv1921548894actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv1921548894 #yiv1921548894activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv1921548894 #yiv1921548894activity span {font-weight:700;}#yiv1921548894 #yiv1921548894activity span:first-child {text-transform:uppercase;}#yiv1921548894 #yiv1921548894activity span a {color:#5085b6;text-decoration:none;}#yiv1921548894 #yiv1921548894activity span span {color:#ff7900;}#yiv1921548894 #yiv1921548894activity span .yiv1921548894underline {text-decoration:underline;}#yiv1921548894 .yiv1921548894attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv1921548894 .yiv1921548894attach div a {text-decoration:none;}#yiv1921548894 .yiv1921548894attach img {border:none;padding-right:5px;}#yiv1921548894 .yiv1921548894attach label {display:block;margin-bottom:5px;}#yiv1921548894 .yiv1921548894attach label a {text-decoration:none;}#yiv1921548894 blockquote {margin:0 0 0 4px;}#yiv1921548894 .yiv1921548894bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv1921548894 .yiv1921548894bold a {text-decoration:none;}#yiv1921548894 dd.yiv1921548894last p a {font-family:Verdana;font-weight:700;}#yiv1921548894 dd.yiv1921548894last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv1921548894 dd.yiv1921548894last p span.yiv1921548894yshortcuts {margin-right:0;}#yiv1921548894 div.yiv1921548894attach-table div div a {text-decoration:none;}#yiv1921548894 div.yiv1921548894attach-table {width:400px;}#yiv1921548894 div.yiv1921548894file-title a, #yiv1921548894 div.yiv1921548894file-title a:active, #yiv1921548894 div.yiv1921548894file-title a:hover, #yiv1921548894 div.yiv1921548894file-title a:visited {text-decoration:none;}#yiv1921548894 div.yiv1921548894photo-title a, #yiv1921548894 div.yiv1921548894photo-title a:active, #yiv1921548894 div.yiv1921548894photo-title a:hover, #yiv1921548894 div.yiv1921548894photo-title a:visited {text-decoration:none;}#yiv1921548894 div#yiv1921548894ygrp-mlmsg #yiv1921548894ygrp-msg p a span.yiv1921548894yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv1921548894 .yiv1921548894green {color:#628c2a;}#yiv1921548894 .yiv1921548894MsoNormal {margin:0 0 0 0;}#yiv1921548894 o {font-size:0;}#yiv1921548894 #yiv1921548894photos div {float:left;width:72px;}#yiv1921548894 #yiv1921548894photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv1921548894 #yiv1921548894photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv1921548894 #yiv1921548894reco-category {font-size:77%;}#yiv1921548894 #yiv1921548894reco-desc {font-size:77%;}#yiv1921548894 .yiv1921548894replbq {margin:4px;}#yiv1921548894 #yiv1921548894ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv1921548894 #yiv1921548894ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv1921548894 #yiv1921548894ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv1921548894 #yiv1921548894ygrp-mlmsg select, #yiv1921548894 input, #yiv1921548894 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv1921548894 #yiv1921548894ygrp-mlmsg pre, #yiv1921548894 code {font:115% monospace;}#yiv1921548894 #yiv1921548894ygrp-mlmsg * {line-height:1.22em;}#yiv1921548894 #yiv1921548894ygrp-mlmsg #yiv1921548894logo {padding-bottom:10px;}#yiv1921548894 #yiv1921548894ygrp-msg p a {font-family:Verdana;}#yiv1921548894 #yiv1921548894ygrp-msg p#yiv1921548894attach-count span {color:#1E66AE;font-weight:700;}#yiv1921548894 #yiv1921548894ygrp-reco #yiv1921548894reco-head {color:#ff7900;font-weight:700;}#yiv1921548894 #yiv1921548894ygrp-reco {margin-bottom:20px;padding:0px;}#yiv1921548894 #yiv1921548894ygrp-sponsor #yiv1921548894ov li a {font-size:130%;text-decoration:none;}#yiv1921548894 #yiv1921548894ygrp-sponsor #yiv1921548894ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv1921548894 #yiv1921548894ygrp-sponsor #yiv1921548894ov ul {margin:0;padding:0 0 0 8px;}#yiv1921548894 #yiv1921548894ygrp-text {font-family:Georgia;}#yiv1921548894 #yiv1921548894ygrp-text p {margin:0 0 1em 0;}#yiv1921548894 #yiv1921548894ygrp-text tt {font-size:120%;}#yiv1921548894 #yiv1921548894ygrp-vital ul li:last-child {border-right:none !important;}#yiv1921548894
phfbettega@yahoo.com.br [shell-script]
2016-11-25 16:37:02 UTC
Permalink
Olá Kleyton, o campo $8 é o nome e o $1 é o código?
Veja se só com awk resolve
awk -F " " '/joanesetin/ {print $8" "$1";exit}'

Abraços Paulo
Post by Kleyton Maia ***@yahoo.com.br [shell-script]
Pessoal pro nome deu certo dessa forma: (com o sort no final diogo)
Porem para o codigo da conexão que vem na posição $3 do awk nao deu resultado com o sort-u ou sem vem os dois
"$1}'|grep -v tty|sort | grep joanesetin |awk '{print $1}'| sort -u
joanesetin
"$1}'|grep -v tty|sort | grep joanesetin |awk '{print $3}'| sort -u
105
90
Dai a rotina se perde e nao derruba ninguém ;(, alguma luz ?
_________________
Cordialmente;
Kleyton Maia
--------------------------------------------------------------------------------------------------------------
*Enviadas:* Sexta-feira, 25 de Novembro de 2016 13:59
*Assunto:* Re: [shell-script] retorno de comando para variavel
Kleyton.
Fiz uns testes no banco progress que tenho internamente aqui na empresa e sugiro que coloque o sort no final
/usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v
tty|sort | grep joao |awk '{print $1}'
joao
joao
/usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty |
grep joao |awk '{print $1}'| sort -u
joao
joao
n
__
Boa tarde,
prompt$comando
joao
joao
promptt$
"$6" "$1}'|grep -v tty|sort | grep joao |awk '{print $1}'
joao
joao
Obrigado!
_________________
Cordialmente;
Kleyton Maia
--------------------------------------------------------------------------------------------------------------
*Enviadas:* Sexta-feira, 25 de Novembro de 2016 11:41
*Assunto:* Re: [shell-script] retorno de comando para variavel
Mande um exemplo completo de retorno para podermos avaliar a resposta.
$ echo joao joao | tr ' ' '\n' | sort | uniq
joao
joao
joao
Nem precisa do tr, mas se for joao da silva joao da silva, complica.
Como vc vê, cada caso é um caso. Então sem um exemplo real, fica difícil
Abcs,
Julio
*
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.
__
Bom dia ,
Pessoal tenho um script que derruba usuários do banco progress em linux,
Ele funciona corretamente para 01 conexão. Porem por vezes quando o usuário tem mais de 01 conexão
esse comando me retorna o nome do usuário duas vezes e com isso ele não derruba ninguém... pois fica
"joa joao" que é diferente de "joao"
dlc= comando para derrubar
banco = nome do banco
nome = nome do usuario que digitou
unomebanco=$("$dlc" "$1"/"$banco" -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty|sort | grep
$nome |awk '{print $1}')
A pergunta seria como fazer pra esse awk me retornar somente 01 nome e nao os dois que ele acha nas
conexões ?
Obrigado pela força.
_________________
Cordialmente;
Kleyton Maia
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
Kleyton Maia kleytonmaia@yahoo.com.br [shell-script]
2016-11-25 16:43:22 UTC
Permalink
Paulo,
Seria o $1 nome e $3 o código da conexão, coloquei em substituição ao meu e deu o seguinte erro:
awk: /joanesetin/ {print $1" "$3";exit}awk:                            ^ unterminated string
será que digitei alguma syntaxe errada ai ? _________________
Cordialmente;

Kleyton Maia


De: "***@yahoo.com.br [shell-script]" <shell-***@yahoogrupos.com.br>
Para: shell-***@yahoogrupos.com.br
Enviadas: Sexta-feira, 25 de Novembro de 2016 14:37
Assunto: Re: [shell-script] retorno de comando para variavel

  Olá Kleyton, o campo $8 é o nome e o $1 é o código?
Veja se só com awk resolve
awk -F " " '/joanesetin/ {print $8" "$1";exit}'

Abraços Paulo
Post by Kleyton Maia ***@yahoo.com.br [shell-script]
Pessoal pro nome deu certo dessa forma: (com o sort no final diogo)
Porem para o codigo da conexão que vem na posição $3 do awk nao deu resultado com o sort-u ou sem vem os dois
"$1}'|grep -v tty|sort | grep joanesetin |awk '{print $1}'| sort -u
joanesetin
"$1}'|grep -v tty|sort | grep joanesetin |awk '{print $3}'| sort -u
105
90
Dai a rotina se perde e nao derruba ninguém ;(, alguma luz ?
_________________
Cordialmente;
Kleyton Maia
----------------------------------------------------------
*Enviadas:* Sexta-feira, 25 de Novembro de 2016 13:59
*Assunto:* Re: [shell-script] retorno de comando para variavel
Kleyton.
Fiz uns testes no banco progress que tenho internamente aqui na empresa e sugiro que coloque o sort no final
/usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v
tty|sort | grep joao |awk '{print $1}'
joao
joao
/usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty |
grep joao |awk '{print $1}'| sort -u
joao
joao
n
__
Boa tarde,
prompt$comando
joao
joao
promptt$
"$6" "$1}'|grep -v tty|sort | grep joao |awk '{print $1}'
joao
joao
Obrigado!
_________________
Cordialmente;
Kleyton Maia
----------------------------------------------------------
*Enviadas:* Sexta-feira, 25 de Novembro de 2016 11:41
*Assunto:* Re: [shell-script] retorno de comando para variavel
Mande um exemplo completo de retorno para podermos avaliar a resposta.
$ echo joao joao | tr ' ' '\n' | sort | uniq
joao
joao
joao
Nem precisa do tr, mas se for joao da silva joao da silva, complica.
Como vc vê, cada caso é um caso. Então sem um exemplo real, fica difícil
Abcs,
Julio
*
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.
__
Bom dia ,
Pessoal tenho um script que derruba usuários do banco progress em linux,
Ele funciona corretamente para 01 conexão. Porem por vezes quando o usuário tem mais de 01 conexão
esse comando me retorna o nome do usuário duas vezes e com isso ele não derruba ninguém... pois fica
"joa joao" que é diferente de "joao"
dlc= comando para derrubar
banco = nome do banco
nome = nome do usuario que digitou
unomebanco=$("$dlc" "$1"/"$banco" -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty|sort | grep
$nome |awk '{print $1}')
A pergunta seria como fazer pra esse awk me retornar somente 01 nome e nao os dois que ele acha nas
conexões ?
Obrigado pela força.
_________________
Cordialmente;
Kleyton Maia
----------------------------------------------------------
----------------------------------------------------------
#yiv6944809025 #yiv6944809025 -- #yiv6944809025ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv6944809025 #yiv6944809025ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv6944809025 #yiv6944809025ygrp-mkp #yiv6944809025hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv6944809025 #yiv6944809025ygrp-mkp #yiv6944809025ads {margin-bottom:10px;}#yiv6944809025 #yiv6944809025ygrp-mkp .yiv6944809025ad {padding:0 0;}#yiv6944809025 #yiv6944809025ygrp-mkp .yiv6944809025ad p {margin:0;}#yiv6944809025 #yiv6944809025ygrp-mkp .yiv6944809025ad a {color:#0000ff;text-decoration:none;}#yiv6944809025 #yiv6944809025ygrp-sponsor #yiv6944809025ygrp-lc {font-family:Arial;}#yiv6944809025 #yiv6944809025ygrp-sponsor #yiv6944809025ygrp-lc #yiv6944809025hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv6944809025 #yiv6944809025ygrp-sponsor #yiv6944809025ygrp-lc .yiv6944809025ad {margin-bottom:10px;padding:0 0;}#yiv6944809025 #yiv6944809025actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv6944809025 #yiv6944809025activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv6944809025 #yiv6944809025activity span {font-weight:700;}#yiv6944809025 #yiv6944809025activity span:first-child {text-transform:uppercase;}#yiv6944809025 #yiv6944809025activity span a {color:#5085b6;text-decoration:none;}#yiv6944809025 #yiv6944809025activity span span {color:#ff7900;}#yiv6944809025 #yiv6944809025activity span .yiv6944809025underline {text-decoration:underline;}#yiv6944809025 .yiv6944809025attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv6944809025 .yiv6944809025attach div a {text-decoration:none;}#yiv6944809025 .yiv6944809025attach img {border:none;padding-right:5px;}#yiv6944809025 .yiv6944809025attach label {display:block;margin-bottom:5px;}#yiv6944809025 .yiv6944809025attach label a {text-decoration:none;}#yiv6944809025 blockquote {margin:0 0 0 4px;}#yiv6944809025 .yiv6944809025bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv6944809025 .yiv6944809025bold a {text-decoration:none;}#yiv6944809025 dd.yiv6944809025last p a {font-family:Verdana;font-weight:700;}#yiv6944809025 dd.yiv6944809025last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv6944809025 dd.yiv6944809025last p span.yiv6944809025yshortcuts {margin-right:0;}#yiv6944809025 div.yiv6944809025attach-table div div a {text-decoration:none;}#yiv6944809025 div.yiv6944809025attach-table {width:400px;}#yiv6944809025 div.yiv6944809025file-title a, #yiv6944809025 div.yiv6944809025file-title a:active, #yiv6944809025 div.yiv6944809025file-title a:hover, #yiv6944809025 div.yiv6944809025file-title a:visited {text-decoration:none;}#yiv6944809025 div.yiv6944809025photo-title a, #yiv6944809025 div.yiv6944809025photo-title a:active, #yiv6944809025 div.yiv6944809025photo-title a:hover, #yiv6944809025 div.yiv6944809025photo-title a:visited {text-decoration:none;}#yiv6944809025 div#yiv6944809025ygrp-mlmsg #yiv6944809025ygrp-msg p a span.yiv6944809025yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv6944809025 .yiv6944809025green {color:#628c2a;}#yiv6944809025 .yiv6944809025MsoNormal {margin:0 0 0 0;}#yiv6944809025 o {font-size:0;}#yiv6944809025 #yiv6944809025photos div {float:left;width:72px;}#yiv6944809025 #yiv6944809025photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv6944809025 #yiv6944809025photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv6944809025 #yiv6944809025reco-category {font-size:77%;}#yiv6944809025 #yiv6944809025reco-desc {font-size:77%;}#yiv6944809025 .yiv6944809025replbq {margin:4px;}#yiv6944809025 #yiv6944809025ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv6944809025 #yiv6944809025ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv6944809025 #yiv6944809025ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv6944809025 #yiv6944809025ygrp-mlmsg select, #yiv6944809025 input, #yiv6944809025 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv6944809025 #yiv6944809025ygrp-mlmsg pre, #yiv6944809025 code {font:115% monospace;}#yiv6944809025 #yiv6944809025ygrp-mlmsg * {line-height:1.22em;}#yiv6944809025 #yiv6944809025ygrp-mlmsg #yiv6944809025logo {padding-bottom:10px;}#yiv6944809025 #yiv6944809025ygrp-msg p a {font-family:Verdana;}#yiv6944809025 #yiv6944809025ygrp-msg p#yiv6944809025attach-count span {color:#1E66AE;font-weight:700;}#yiv6944809025 #yiv6944809025ygrp-reco #yiv6944809025reco-head {color:#ff7900;font-weight:700;}#yiv6944809025 #yiv6944809025ygrp-reco {margin-bottom:20px;padding:0px;}#yiv6944809025 #yiv6944809025ygrp-sponsor #yiv6944809025ov li a {font-size:130%;text-decoration:none;}#yiv6944809025 #yiv6944809025ygrp-sponsor #yiv6944809025ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv6944809025 #yiv6944809025ygrp-sponsor #yiv6944809025ov ul {margin:0;padding:0 0 0 8px;}#yiv6944809025 #yiv6944809025ygrp-text {font-family:Georgia;}#yiv6944809025 #yiv6944809025ygrp-text p {margin:0 0 1em 0;}#yiv6944809025 #yiv6944809025ygrp-text tt {font-size:120%;}#yiv6944809025 #yiv6944809025ygrp-vital ul li:last-child {border-right:none !important;}#yiv6944809025
phfbettega@yahoo.com.br [shell-script]
2016-11-25 17:17:07 UTC
Permalink
É verdade tem uma aspas sobrando ali.
Post by Kleyton Maia ***@yahoo.com.br [shell-script]
awk: /joanesetin/ {print $1" "$3";exit}
awk: ^ unterminated string
O que eu pensei foi isso

[***@mclaren ~]# /usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |
awk -F " " '/joanesetin/ {print $8" "$1;exit}'

Nas linhas onde aparece joanesetin imprima os campos 8(nome?) e 1(código?),
e encerre logo depois de imprimir.

Se houver uma linha com joanesetin e tty ela deve ser evitada?
Daí o teste pode ser /joanesetin/ && !/tty/
Post by Kleyton Maia ***@yahoo.com.br [shell-script]
Paulo,
awk: /joanesetin/ {print $1" "$3";exit}
awk: ^ unterminated string
será que digitei alguma syntaxe errada ai ?
_________________
Cordialmente;
Kleyton Maia
--------------------------------------------------------------------------------------------------------------
*Enviadas:* Sexta-feira, 25 de Novembro de 2016 14:37
*Assunto:* Re: [shell-script] retorno de comando para variavel
Olá Kleyton, o campo $8 é o nome e o $1 é o código?
Veja se só com awk resolve
awk -F " " '/joanesetin/ {print $8" "$1";exit}'
Abraços Paulo
Post by Kleyton Maia ***@yahoo.com.br [shell-script]
Pessoal pro nome deu certo dessa forma: (com o sort no final diogo)
Porem para o codigo da conexão que vem na posição $3 do awk nao deu resultado com o sort-u ou sem vem os dois
"$1}'|grep -v tty|sort | grep joanesetin |awk '{print $1}'| sort -u
joanesetin
"$1}'|grep -v tty|sort | grep joanesetin |awk '{print $3}'| sort -u
105
90
Dai a rotina se perde e nao derruba ninguém ;(, alguma luz ?
_________________
Cordialmente;
Kleyton Maia
----------------------------------------------------------
*Enviadas:* Sexta-feira, 25 de Novembro de 2016 13:59
*Assunto:* Re: [shell-script] retorno de comando para variavel
Kleyton.
Fiz uns testes no banco progress que tenho internamente aqui na empresa e sugiro que coloque o sort no final
/usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v
tty|sort | grep joao |awk '{print $1}'
joao
joao
/usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty |
grep joao |awk '{print $1}'| sort -u
joao
joao
n
__
Boa tarde,
prompt$comando
joao
joao
promptt$
"$6" "$1}'|grep -v tty|sort | grep joao |awk '{print $1}'
joao
joao
Obrigado!
_________________
Cordialmente;
Kleyton Maia
----------------------------------------------------------
*Enviadas:* Sexta-feira, 25 de Novembro de 2016 11:41
*Assunto:* Re: [shell-script] retorno de comando para variavel
Mande um exemplo completo de retorno para podermos avaliar a resposta.
$ echo joao joao | tr ' ' '\n' | sort | uniq
joao
joao
joao
Nem precisa do tr, mas se for joao da silva joao da silva, complica.
Como vc vê, cada caso é um caso. Então sem um exemplo real, fica difícil
Abcs,
Julio
*
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.
__
Bom dia ,
Pessoal tenho um script que derruba usuários do banco progress em linux,
Ele funciona corretamente para 01 conexão. Porem por vezes quando o usuário tem mais de 01 conexão
esse comando me retorna o nome do usuário duas vezes e com isso ele não derruba ninguém... pois fica
"joa joao" que é diferente de "joao"
dlc= comando para derrubar
banco = nome do banco
nome = nome do usuario que digitou
unomebanco=$("$dlc" "$1"/"$banco" -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty|sort | grep
$nome |awk '{print $1}')
A pergunta seria como fazer pra esse awk me retornar somente 01 nome e nao os dois que ele acha nas
conexões ?
Obrigado pela força.
_________________
Cordialmente;
Kleyton Maia
----------------------------------------------------------
----------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
Kleyton Maia kleytonmaia@yahoo.com.br [shell-script]
2016-11-25 17:13:57 UTC
Permalink
Pessoal Obrigado pela ajuda consegui,
Ajustando o awk que o Paulo Passou ficou da seguinte forma:
Para trazer o primeiro nome:unomebanco=$("$dlc" "$1"/"$banco" -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty|sort | grep $nome | awk -F " " ' $nome {print $1 ;exit}')

Para trazer o primeiro código:ucodigo=$("$dlc" "$1"/"$banco" -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty|sort | grep $nome | awk -F " " ' $nome {print $3 ;exit}')
 _________________
Cordialmente;

Kleyton Maia

De: "***@yahoo.com.br [shell-script]" <shell-***@yahoogrupos.com.br>
Para: shell-***@yahoogrupos.com.br
Enviadas: Sexta-feira, 25 de Novembro de 2016 14:37
Assunto: Re: [shell-script] retorno de comando para variavel

  Olá Kleyton, o campo $8 é o nome e o $1 é o código?
Veja se só com awk resolve
awk -F " " '/joanesetin/ {print $8" "$1";exit}'

Abraços Paulo
Post by Kleyton Maia ***@yahoo.com.br [shell-script]
Pessoal pro nome deu certo dessa forma: (com o sort no final diogo)
Porem para o codigo da conexão que vem na posição $3 do awk nao deu resultado com o sort-u ou sem vem os dois
"$1}'|grep -v tty|sort | grep joanesetin |awk '{print $1}'| sort -u
joanesetin
"$1}'|grep -v tty|sort | grep joanesetin |awk '{print $3}'| sort -u
105
90
Dai a rotina se perde e nao derruba ninguém ;(, alguma luz ?
_________________
Cordialmente;
Kleyton Maia
----------------------------------------------------------
*Enviadas:* Sexta-feira, 25 de Novembro de 2016 13:59
*Assunto:* Re: [shell-script] retorno de comando para variavel
Kleyton.
Fiz uns testes no banco progress que tenho internamente aqui na empresa e sugiro que coloque o sort no final
/usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v
tty|sort | grep joao |awk '{print $1}'
joao
joao
/usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty |
grep joao |awk '{print $1}'| sort -u
joao
joao
n
__
Boa tarde,
prompt$comando
joao
joao
promptt$
"$6" "$1}'|grep -v tty|sort | grep joao |awk '{print $1}'
joao
joao
Obrigado!
_________________
Cordialmente;
Kleyton Maia
----------------------------------------------------------
*Enviadas:* Sexta-feira, 25 de Novembro de 2016 11:41
*Assunto:* Re: [shell-script] retorno de comando para variavel
Mande um exemplo completo de retorno para podermos avaliar a resposta.
$ echo joao joao | tr ' ' '\n' | sort | uniq
joao
joao
joao
Nem precisa do tr, mas se for joao da silva joao da silva, complica.
Como vc vê, cada caso é um caso. Então sem um exemplo real, fica difícil
Abcs,
Julio
*
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.
__
Bom dia ,
Pessoal tenho um script que derruba usuários do banco progress em linux,
Ele funciona corretamente para 01 conexão. Porem por vezes quando o usuário tem mais de 01 conexão
esse comando me retorna o nome do usuário duas vezes e com isso ele não derruba ninguém... pois fica
"joa joao" que é diferente de "joao"
dlc= comando para derrubar
banco = nome do banco
nome = nome do usuario que digitou
unomebanco=$("$dlc" "$1"/"$banco" -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty|sort | grep
$nome |awk '{print $1}')
A pergunta seria como fazer pra esse awk me retornar somente 01 nome e nao os dois que ele acha nas
conexões ?
Obrigado pela força.
_________________
Cordialmente;
Kleyton Maia
----------------------------------------------------------
----------------------------------------------------------
#yiv6944809025 #yiv6944809025 -- #yiv6944809025ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv6944809025 #yiv6944809025ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv6944809025 #yiv6944809025ygrp-mkp #yiv6944809025hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv6944809025 #yiv6944809025ygrp-mkp #yiv6944809025ads {margin-bottom:10px;}#yiv6944809025 #yiv6944809025ygrp-mkp .yiv6944809025ad {padding:0 0;}#yiv6944809025 #yiv6944809025ygrp-mkp .yiv6944809025ad p {margin:0;}#yiv6944809025 #yiv6944809025ygrp-mkp .yiv6944809025ad a {color:#0000ff;text-decoration:none;}#yiv6944809025 #yiv6944809025ygrp-sponsor #yiv6944809025ygrp-lc {font-family:Arial;}#yiv6944809025 #yiv6944809025ygrp-sponsor #yiv6944809025ygrp-lc #yiv6944809025hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv6944809025 #yiv6944809025ygrp-sponsor #yiv6944809025ygrp-lc .yiv6944809025ad {margin-bottom:10px;padding:0 0;}#yiv6944809025 #yiv6944809025actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv6944809025 #yiv6944809025activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv6944809025 #yiv6944809025activity span {font-weight:700;}#yiv6944809025 #yiv6944809025activity span:first-child {text-transform:uppercase;}#yiv6944809025 #yiv6944809025activity span a {color:#5085b6;text-decoration:none;}#yiv6944809025 #yiv6944809025activity span span {color:#ff7900;}#yiv6944809025 #yiv6944809025activity span .yiv6944809025underline {text-decoration:underline;}#yiv6944809025 .yiv6944809025attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv6944809025 .yiv6944809025attach div a {text-decoration:none;}#yiv6944809025 .yiv6944809025attach img {border:none;padding-right:5px;}#yiv6944809025 .yiv6944809025attach label {display:block;margin-bottom:5px;}#yiv6944809025 .yiv6944809025attach label a {text-decoration:none;}#yiv6944809025 blockquote {margin:0 0 0 4px;}#yiv6944809025 .yiv6944809025bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv6944809025 .yiv6944809025bold a {text-decoration:none;}#yiv6944809025 dd.yiv6944809025last p a {font-family:Verdana;font-weight:700;}#yiv6944809025 dd.yiv6944809025last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv6944809025 dd.yiv6944809025last p span.yiv6944809025yshortcuts {margin-right:0;}#yiv6944809025 div.yiv6944809025attach-table div div a {text-decoration:none;}#yiv6944809025 div.yiv6944809025attach-table {width:400px;}#yiv6944809025 div.yiv6944809025file-title a, #yiv6944809025 div.yiv6944809025file-title a:active, #yiv6944809025 div.yiv6944809025file-title a:hover, #yiv6944809025 div.yiv6944809025file-title a:visited {text-decoration:none;}#yiv6944809025 div.yiv6944809025photo-title a, #yiv6944809025 div.yiv6944809025photo-title a:active, #yiv6944809025 div.yiv6944809025photo-title a:hover, #yiv6944809025 div.yiv6944809025photo-title a:visited {text-decoration:none;}#yiv6944809025 div#yiv6944809025ygrp-mlmsg #yiv6944809025ygrp-msg p a span.yiv6944809025yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv6944809025 .yiv6944809025green {color:#628c2a;}#yiv6944809025 .yiv6944809025MsoNormal {margin:0 0 0 0;}#yiv6944809025 o {font-size:0;}#yiv6944809025 #yiv6944809025photos div {float:left;width:72px;}#yiv6944809025 #yiv6944809025photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv6944809025 #yiv6944809025photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv6944809025 #yiv6944809025reco-category {font-size:77%;}#yiv6944809025 #yiv6944809025reco-desc {font-size:77%;}#yiv6944809025 .yiv6944809025replbq {margin:4px;}#yiv6944809025 #yiv6944809025ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv6944809025 #yiv6944809025ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv6944809025 #yiv6944809025ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv6944809025 #yiv6944809025ygrp-mlmsg select, #yiv6944809025 input, #yiv6944809025 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv6944809025 #yiv6944809025ygrp-mlmsg pre, #yiv6944809025 code {font:115% monospace;}#yiv6944809025 #yiv6944809025ygrp-mlmsg * {line-height:1.22em;}#yiv6944809025 #yiv6944809025ygrp-mlmsg #yiv6944809025logo {padding-bottom:10px;}#yiv6944809025 #yiv6944809025ygrp-msg p a {font-family:Verdana;}#yiv6944809025 #yiv6944809025ygrp-msg p#yiv6944809025attach-count span {color:#1E66AE;font-weight:700;}#yiv6944809025 #yiv6944809025ygrp-reco #yiv6944809025reco-head {color:#ff7900;font-weight:700;}#yiv6944809025 #yiv6944809025ygrp-reco {margin-bottom:20px;padding:0px;}#yiv6944809025 #yiv6944809025ygrp-sponsor #yiv6944809025ov li a {font-size:130%;text-decoration:none;}#yiv6944809025 #yiv6944809025ygrp-sponsor #yiv6944809025ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv6944809025 #yiv6944809025ygrp-sponsor #yiv6944809025ov ul {margin:0;padding:0 0 0 8px;}#yiv6944809025 #yiv6944809025ygrp-text {font-family:Georgia;}#yiv6944809025 #yiv6944809025ygrp-text p {margin:0 0 1em 0;}#yiv6944809025 #yiv6944809025ygrp-text tt {font-size:120%;}#yiv6944809025 #yiv6944809025ygrp-vital ul li:last-child {border-right:none !important;}#yiv6944809025
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2016-11-25 16:51:49 UTC
Permalink
Essa é a forma mais fácil.
$ /usr/dlc113/bin/proshut /bancos/Producao/totvs12/eai -C list |awk -F " "
'{print $8" "$6" "$1}'|grep -v tty|sort | grep joao |awk '{print $1}' | uniq

Abcs,
Julio
*@juliobash*

*Próximos cursos de Shell*
*Cidade Local Perí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.
Post by Kleyton Maia ***@yahoo.com.br [shell-script]
Boa tarde,
Mestre julio entendi poderia ter explicado melhor me desculpe, é o segundo
prompt$comando
joao
joao
promptt$
list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty|sort | grep joao |awk
'{print $1}'
joao
joao
Obrigado!
_________________
Cordialmente;
Kleyton Maia
------------------------------
*Enviadas:* Sexta-feira, 25 de Novembro de 2016 11:41
*Assunto:* Re: [shell-script] retorno de comando para variavel
Mande um exemplo completo de retorno para podermos avaliar a resposta.
$ echo joao joao | tr ' ' '\n' | sort | uniq
joao
joao
joao
Nem precisa do tr, mas se for joao da silva joao da silva, complica.
Como vc vê, cada caso é um caso. Então sem um exemplo real, fica difícil
Abcs,
Julio
*Próximos cursos de Shell*
*Cidade Local Perí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.
Bom dia ,
Pessoal tenho um script que derruba usuários do banco progress em linux,
Ele funciona corretamente para 01 conexão. Porem por vezes quando o
usuário tem mais de 01 conexão esse comando me retorna o nome do usuário
duas vezes e com isso ele não derruba ninguém... pois fica "joa joao" que é
diferente de "joao"
dlc= comando para derrubar
banco = nome do banco
nome = nome do usuario que digitou
unomebanco=$("$dlc" "$1"/"$banco" -C list |awk -F " " '{print $8" "$6"
"$1}'|grep -v tty|sort | grep $nome |awk '{print $1}')
A pergunta seria como fazer pra esse awk me retornar somente 01 nome e nao
os dois que ele acha nas conexões ?
Obrigado pela força.
_________________
Cordialmente;
Kleyton Maia
Cristiano Amaral cristianoeinar@gmail.com [shell-script]
2016-11-25 13:37:21 UTC
Permalink
sort -u
Post by Kleyton Maia ***@yahoo.com.br [shell-script]
Bom dia ,
Pessoal tenho um script que derruba usuários do banco progress em linux,
Ele funciona corretamente para 01 conexão. Porem por vezes quando o
usuário tem mais de 01 conexão esse comando me retorna o nome do usuário
duas vezes e com isso ele não derruba ninguém... pois fica "joa joao" que é
diferente de "joao"
dlc= comando para derrubar
banco = nome do banco
nome = nome do usuario que digitou
unomebanco=$("$dlc" "$1"/"$banco" -C list |awk -F " " '{print $8" "$6"
"$1}'|grep -v tty|sort | grep $nome |awk '{print $1}')
A pergunta seria como fazer pra esse awk me retornar somente 01 nome e nao
os dois que ele acha nas conexões ?
Obrigado pela força.
_________________
Cordialmente;
Kleyton Maia
Kleyton Maia kleytonmaia@yahoo.com.br [shell-script]
2016-11-25 15:55:28 UTC
Permalink
Opa , Beleza Cristiano a principio deu certo vou colocar dentro do script e testar, muuuito obrigado!
 _________________Cordialmente;

Kleyton Maia
De: "Cristiano Amaral ***@gmail.com [shell-script]" <shell-***@yahoogrupos.com.br>
Para: shell-***@yahoogrupos.com.br
Enviadas: Sexta-feira, 25 de Novembro de 2016 11:37
Assunto: Re: [shell-script] retorno de comando para variavel

  sort -u
Em 25/11/2016 11:26, "Kleyton Maia ***@yahoo.com.br [shell-script]" <shell-***@yahoogrupos.com.br> escreveu:

  Bom dia , 
Pessoal tenho um script que derruba usuários do banco progress em linux, Ele funciona corretamente para 01 conexão. Porem por vezes quando o usuário tem mais de 01 conexão esse comando me retorna o nome do usuário duas vezes e com isso ele não derruba ninguém... pois fica "joa joao" que é diferente de "joao"
Ex:
dlc= comando para derrubarbanco = nome do banconome = nome do usuario que digitou
unomebanco=$("$dlc" "$1"/"$banco" -C list |awk -F " " '{print $8" "$6" "$1}'|grep -v tty|sort | grep $nome |awk '{print $1}')
A pergunta seria como fazer pra esse awk me retornar somente 01 nome e nao os dois que ele acha nas conexões ? 

Obrigado pela força. _________________
Cordialmente;

Kleyton Maia


#yiv7424253046 #yiv7424253046 -- #yiv7424253046ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv7424253046 #yiv7424253046ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv7424253046 #yiv7424253046ygrp-mkp #yiv7424253046hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv7424253046 #yiv7424253046ygrp-mkp #yiv7424253046ads {margin-bottom:10px;}#yiv7424253046 #yiv7424253046ygrp-mkp .yiv7424253046ad {padding:0 0;}#yiv7424253046 #yiv7424253046ygrp-mkp .yiv7424253046ad p {margin:0;}#yiv7424253046 #yiv7424253046ygrp-mkp .yiv7424253046ad a {color:#0000ff;text-decoration:none;}#yiv7424253046 #yiv7424253046ygrp-sponsor #yiv7424253046ygrp-lc {font-family:Arial;}#yiv7424253046 #yiv7424253046ygrp-sponsor #yiv7424253046ygrp-lc #yiv7424253046hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv7424253046 #yiv7424253046ygrp-sponsor #yiv7424253046ygrp-lc .yiv7424253046ad {margin-bottom:10px;padding:0 0;}#yiv7424253046 #yiv7424253046actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv7424253046 #yiv7424253046activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv7424253046 #yiv7424253046activity span {font-weight:700;}#yiv7424253046 #yiv7424253046activity span:first-child {text-transform:uppercase;}#yiv7424253046 #yiv7424253046activity span a {color:#5085b6;text-decoration:none;}#yiv7424253046 #yiv7424253046activity span span {color:#ff7900;}#yiv7424253046 #yiv7424253046activity span .yiv7424253046underline {text-decoration:underline;}#yiv7424253046 .yiv7424253046attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv7424253046 .yiv7424253046attach div a {text-decoration:none;}#yiv7424253046 .yiv7424253046attach img {border:none;padding-right:5px;}#yiv7424253046 .yiv7424253046attach label {display:block;margin-bottom:5px;}#yiv7424253046 .yiv7424253046attach label a {text-decoration:none;}#yiv7424253046 blockquote {margin:0 0 0 4px;}#yiv7424253046 .yiv7424253046bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv7424253046 .yiv7424253046bold a {text-decoration:none;}#yiv7424253046 dd.yiv7424253046last p a {font-family:Verdana;font-weight:700;}#yiv7424253046 dd.yiv7424253046last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv7424253046 dd.yiv7424253046last p span.yiv7424253046yshortcuts {margin-right:0;}#yiv7424253046 div.yiv7424253046attach-table div div a {text-decoration:none;}#yiv7424253046 div.yiv7424253046attach-table {width:400px;}#yiv7424253046 div.yiv7424253046file-title a, #yiv7424253046 div.yiv7424253046file-title a:active, #yiv7424253046 div.yiv7424253046file-title a:hover, #yiv7424253046 div.yiv7424253046file-title a:visited {text-decoration:none;}#yiv7424253046 div.yiv7424253046photo-title a, #yiv7424253046 div.yiv7424253046photo-title a:active, #yiv7424253046 div.yiv7424253046photo-title a:hover, #yiv7424253046 div.yiv7424253046photo-title a:visited {text-decoration:none;}#yiv7424253046 div#yiv7424253046ygrp-mlmsg #yiv7424253046ygrp-msg p a span.yiv7424253046yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv7424253046 .yiv7424253046green {color:#628c2a;}#yiv7424253046 .yiv7424253046MsoNormal {margin:0 0 0 0;}#yiv7424253046 o {font-size:0;}#yiv7424253046 #yiv7424253046photos div {float:left;width:72px;}#yiv7424253046 #yiv7424253046photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv7424253046 #yiv7424253046photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv7424253046 #yiv7424253046reco-category {font-size:77%;}#yiv7424253046 #yiv7424253046reco-desc {font-size:77%;}#yiv7424253046 .yiv7424253046replbq {margin:4px;}#yiv7424253046 #yiv7424253046ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv7424253046 #yiv7424253046ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv7424253046 #yiv7424253046ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv7424253046 #yiv7424253046ygrp-mlmsg select, #yiv7424253046 input, #yiv7424253046 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv7424253046 #yiv7424253046ygrp-mlmsg pre, #yiv7424253046 code {font:115% monospace;}#yiv7424253046 #yiv7424253046ygrp-mlmsg * {line-height:1.22em;}#yiv7424253046 #yiv7424253046ygrp-mlmsg #yiv7424253046logo {padding-bottom:10px;}#yiv7424253046 #yiv7424253046ygrp-msg p a {font-family:Verdana;}#yiv7424253046 #yiv7424253046ygrp-msg p#yiv7424253046attach-count span {color:#1E66AE;font-weight:700;}#yiv7424253046 #yiv7424253046ygrp-reco #yiv7424253046reco-head {color:#ff7900;font-weight:700;}#yiv7424253046 #yiv7424253046ygrp-reco {margin-bottom:20px;padding:0px;}#yiv7424253046 #yiv7424253046ygrp-sponsor #yiv7424253046ov li a {font-size:130%;text-decoration:none;}#yiv7424253046 #yiv7424253046ygrp-sponsor #yiv7424253046ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv7424253046 #yiv7424253046ygrp-sponsor #yiv7424253046ov ul {margin:0;padding:0 0 0 8px;}#yiv7424253046 #yiv7424253046ygrp-text {font-family:Georgia;}#yiv7424253046 #yiv7424253046ygrp-text p {margin:0 0 1em 0;}#yiv7424253046 #yiv7424253046ygrp-text tt {font-size:120%;}#yiv7424253046 #yiv7424253046ygrp-vital ul li:last-child {border-right:none !important;}#yiv7424253046
itamarnet@yahoo.com.br [shell-script]
2016-11-26 00:19:17 UTC
Permalink
Kleyton,
Vi que já recebeu muitas respostas,e já solucionou o problema.
Todavia só queria fazer uma observações:
No primeiro awk vc especifica o separador de campo como um espaço. É isso mesmo? O awk já usa um ou mais espaços ou tabs como separador padrão. Se essa condição atende não precisa especificar.
No primeiro awk, vc coloca 3 campos separados por espaços literalmente, que estão entre aspas. Vc poderia usar vírgula
O grep vc elimina as linhas com tty ordena, e depois só imprime o primeiro campo e não quer nomes repetidos
.
Isso poderia estar num awk só:

unomebanco=$("$dlc" "$1"/"$banco" -C list |awk '/tty/{next}; ! line[$8]++ {print $8}' | sort)

É apenas mais uma opção

[]'s
Itamar
itamarnet@yahoo.com.br [shell-script]
2016-11-26 00:35:13 UTC
Permalink
Kleyton,
Vi que já recebeu muitas respostas,e já solucionou o problema.
Todavia só queria fazer umas observações:
- No primeiro awk vc especifica o separador de campo como um espaço. É isso mesmo? O awk já usa um ou mais espaços ou tabs como separador padrão. Se essa condição atende não precisa especificar.
- No primeiro awk, vc coloca 3 campos separados por espaços literalmente, que estão entre aspas. Vc poderia usar vírgula
- O grep vc elimina as linhas com tty ordena, e depois só imprime o primeiro campo e pesquisa um nome específico e não o quer repetido.
.
Isso poderia estar num awk só:

unomebanco=$( "$dlc" "$1"/"$banco" -C list | awk '/tty/{ next }; $8 ~ /'$nome'/ { print $8; exit }' )

É apenas mais uma opção

[]'s
Itamar

Loading...