Discussion:
[shell-script] ShellScript Contador
Vinicius Ruiz viruiz777@yahoo.com.br [shell-script]
2016-10-05 13:01:38 UTC
Permalink
Pessoal Bom dia Tudo Bem ?
Gostaria que dessem uma luz sobre como fazer funcionar o seguinte caso.
Tenho dois valores de variavel

var1=0000000001var2=0
var2=$(( $var2 + 1 ))
O resultado de var2 ficará será 2 ... var2=2
Mas eu preciso que o var2 fique com nesse formato 0000000002
E a cada incremento se chegar em fique assim 0000000010
Alguém poderia dar um luz pois o contador exclui os "zeros" a esquerda quando o somo.
Obrigado.
No aguardo.
Vinicius
William Alves dos Santos williamalvessantos@gmail.com [shell-script]
2016-10-05 13:15:55 UTC
Permalink
Meu caro,

Utilize um printf, para formatar a saída desta forma.

nova_variavel=`printf "%0*10*d\n" $var2`
echo $nova_variavel

Att

Abraços

*William Alves dos Santos*
Cel.: +55 (11) 96835 8172
Post by Vinicius Ruiz ***@yahoo.com.br [shell-script]
Pessoal Bom dia Tudo Bem ?
Gostaria que dessem uma luz sobre como fazer funcionar o seguinte caso.
Tenho dois valores de variavel
var1=0000000001
var2=0
var2=$(( $var2 + 1 ))
O resultado de var2 ficará será 2 ... var2=2
Mas eu preciso que o var2 fique com nesse formato *000000000*2
E a cada incremento se chegar em fique assim *000000001**0*
Alguém poderia dar um luz pois o contador exclui os "zeros" a esquerda quando o somo.
Obrigado.
No aguardo.
Vinicius
Vinicius Ruiz viruiz777@yahoo.com.br [shell-script]
2016-10-05 13:27:03 UTC
Permalink
Olá William,
Funcionou perfeitamente.

Obrigado pela ajuda.
Abraços.



Em Quarta-feira, 5 de Outubro de 2016 10:24, "William Alves dos Santos ***@gmail.com [shell-script]" <shell-***@yahoogrupos.com.br> escreveu:


  Meu caro,

Utilize um printf, para formatar a saída desta forma.

nova_variavel=`printf "%010d\n" $var2`
echo $nova_variavel

Att

Abraços

William Alves dos Santos
Cel.: +55 (11) 96835 8172


Em 5 de outubro de 2016 10:01, Vinicius Ruiz ***@yahoo.com.br [shell-script] <shell-***@yahoogrupos.com.br> escreveu:

  Pessoal Bom dia Tudo Bem ?
Gostaria que dessem uma luz sobre como fazer funcionar o seguinte caso.
Tenho dois valores de variavel

var1=0000000001var2=0
var2=$(( $var2 + 1 ))
O resultado de var2 ficará será 2 ... var2=2
Mas eu preciso que o var2 fique com nesse formato 0000000002
E a cada incremento se chegar em fique assim 0000000010
Alguém poderia dar um luz pois o contador exclui os "zeros" a esquerda quando o somo.
Obrigado.
No aguardo.
Vinicius


#yiv2212442481 #yiv2212442481 -- #yiv2212442481ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv2212442481 #yiv2212442481ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv2212442481 #yiv2212442481ygrp-mkp #yiv2212442481hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv2212442481 #yiv2212442481ygrp-mkp #yiv2212442481ads {margin-bottom:10px;}#yiv2212442481 #yiv2212442481ygrp-mkp .yiv2212442481ad {padding:0 0;}#yiv2212442481 #yiv2212442481ygrp-mkp .yiv2212442481ad p {margin:0;}#yiv2212442481 #yiv2212442481ygrp-mkp .yiv2212442481ad a {color:#0000ff;text-decoration:none;}#yiv2212442481 #yiv2212442481ygrp-sponsor #yiv2212442481ygrp-lc {font-family:Arial;}#yiv2212442481 #yiv2212442481ygrp-sponsor #yiv2212442481ygrp-lc #yiv2212442481hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv2212442481 #yiv2212442481ygrp-sponsor #yiv2212442481ygrp-lc .yiv2212442481ad {margin-bottom:10px;padding:0 0;}#yiv2212442481 #yiv2212442481actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv2212442481 #yiv2212442481activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv2212442481 #yiv2212442481activity span {font-weight:700;}#yiv2212442481 #yiv2212442481activity span:first-child {text-transform:uppercase;}#yiv2212442481 #yiv2212442481activity span a {color:#5085b6;text-decoration:none;}#yiv2212442481 #yiv2212442481activity span span {color:#ff7900;}#yiv2212442481 #yiv2212442481activity span .yiv2212442481underline {text-decoration:underline;}#yiv2212442481 .yiv2212442481attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv2212442481 .yiv2212442481attach div a {text-decoration:none;}#yiv2212442481 .yiv2212442481attach img {border:none;padding-right:5px;}#yiv2212442481 .yiv2212442481attach label {display:block;margin-bottom:5px;}#yiv2212442481 .yiv2212442481attach label a {text-decoration:none;}#yiv2212442481 blockquote {margin:0 0 0 4px;}#yiv2212442481 .yiv2212442481bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv2212442481 .yiv2212442481bold a {text-decoration:none;}#yiv2212442481 dd.yiv2212442481last p a {font-family:Verdana;font-weight:700;}#yiv2212442481 dd.yiv2212442481last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv2212442481 dd.yiv2212442481last p span.yiv2212442481yshortcuts {margin-right:0;}#yiv2212442481 div.yiv2212442481attach-table div div a {text-decoration:none;}#yiv2212442481 div.yiv2212442481attach-table {width:400px;}#yiv2212442481 div.yiv2212442481file-title a, #yiv2212442481 div.yiv2212442481file-title a:active, #yiv2212442481 div.yiv2212442481file-title a:hover, #yiv2212442481 div.yiv2212442481file-title a:visited {text-decoration:none;}#yiv2212442481 div.yiv2212442481photo-title a, #yiv2212442481 div.yiv2212442481photo-title a:active, #yiv2212442481 div.yiv2212442481photo-title a:hover, #yiv2212442481 div.yiv2212442481photo-title a:visited {text-decoration:none;}#yiv2212442481 div#yiv2212442481ygrp-mlmsg #yiv2212442481ygrp-msg p a span.yiv2212442481yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv2212442481 .yiv2212442481green {color:#628c2a;}#yiv2212442481 .yiv2212442481MsoNormal {margin:0 0 0 0;}#yiv2212442481 o {font-size:0;}#yiv2212442481 #yiv2212442481photos div {float:left;width:72px;}#yiv2212442481 #yiv2212442481photos div div {border:1px solid #666666;min-height:62px;overflow:hidden;width:62px;}#yiv2212442481 #yiv2212442481photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv2212442481 #yiv2212442481reco-category {font-size:77%;}#yiv2212442481 #yiv2212442481reco-desc {font-size:77%;}#yiv2212442481 .yiv2212442481replbq {margin:4px;}#yiv2212442481 #yiv2212442481ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv2212442481 #yiv2212442481ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv2212442481 #yiv2212442481ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv2212442481 #yiv2212442481ygrp-mlmsg select, #yiv2212442481 input, #yiv2212442481 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv2212442481 #yiv2212442481ygrp-mlmsg pre, #yiv2212442481 code {font:115% monospace;}#yiv2212442481 #yiv2212442481ygrp-mlmsg * {line-height:1.22em;}#yiv2212442481 #yiv2212442481ygrp-mlmsg #yiv2212442481logo {padding-bottom:10px;}#yiv2212442481 #yiv2212442481ygrp-msg p a {font-family:Verdana;}#yiv2212442481 #yiv2212442481ygrp-msg p#yiv2212442481attach-count span {color:#1E66AE;font-weight:700;}#yiv2212442481 #yiv2212442481ygrp-reco #yiv2212442481reco-head {color:#ff7900;font-weight:700;}#yiv2212442481 #yiv2212442481ygrp-reco {margin-bottom:20px;padding:0px;}#yiv2212442481 #yiv2212442481ygrp-sponsor #yiv2212442481ov li a {font-size:130%;text-decoration:none;}#yiv2212442481 #yiv2212442481ygrp-sponsor #yiv2212442481ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv2212442481 #yiv2212442481ygrp-sponsor #yiv2212442481ov ul {margin:0;padding:0 0 0 8px;}#yiv2212442481 #yiv2212442481ygrp-text {font-family:Georgia;}#yiv2212442481 #yiv2212442481ygrp-text p {margin:0 0 1em 0;}#yiv2212442481 #yiv2212442481ygrp-text tt {font-size:120%;}#yiv2212442481 #yiv2212442481ygrp-vital ul li:last-child {border-right:none !important;}#yiv2212442481
itamarnet@yahoo.com.br [shell-script]
2016-10-05 13:29:33 UTC
Permalink
Caro Vinicius

Há real necessidade da variável estar com esses zeros a esquerda?


Se não forem números octadecimais esses zeros não são significativos, e nos cálculos vão ser sempre desconsiderados.


Para exibir com esses zeros pode usar o printf


var2=0
var2=$(( var2 + 1 ))


por exempo:
$ printf "%010d\n" $var2

0000000001


Essa é uma maneira de retornar visualmente ou depois apontar o resultado para a variável

$ var2=$(printf "%010d\n" $var2)

$ echo $var
0000000001



Ajuda?


[]'s
Itamar
Robson Martins robson_martins@yahoo.com.br [shell-script]
2016-10-05 13:12:00 UTC
Permalink
Bom Dia Vinicius,
var2=$(printf %010d $(($var2 + 1)))



Em Quarta-feira, 5 de Outubro de 2016 10:04, "Vinicius Ruiz ***@yahoo.com.br [shell-script]" <shell-***@yahoogrupos.com.br> escreveu:



  Pessoal Bom dia Tudo Bem ?
Gostaria que dessem uma luz sobre como fazer funcionar o seguinte caso.
Tenho dois valores de variavel


var1=0000000001var2=0
var2=$(( $var2 + 1 ))
O resultado de var2 ficará será 2 ... var2=2
Mas eu preciso que o var2 fique com nesse formato 0000000002
E a cada incremento se chegar em fique assim 0000000010
Alguém poderia dar um luz pois o contador exclui os "zeros" a esquerda quando o somo.
Obrigado.

No aguardo.
Vinicius
#yiv8135000569 #yiv8135000569 -- #yiv8135000569ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv8135000569 #yiv8135000569ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv8135000569 #yiv8135000569ygrp-mkp #yiv8135000569hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv8135000569 #yiv8135000569ygrp-mkp #yiv8135000569ads {margin-bottom:10px;}#yiv8135000569 #yiv8135000569ygrp-mkp .yiv8135000569ad {padding:0 0;}#yiv8135000569 #yiv8135000569ygrp-mkp .yiv8135000569ad p {margin:0;}#yiv8135000569 #yiv8135000569ygrp-mkp .yiv8135000569ad a {color:#0000ff;text-decoration:none;}#yiv8135000569 #yiv8135000569ygrp-sponsor #yiv8135000569ygrp-lc {font-family:Arial;}#yiv8135000569 #yiv8135000569ygrp-sponsor #yiv8135000569ygrp-lc #yiv8135000569hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv8135000569 #yiv8135000569ygrp-sponsor #yiv8135000569ygrp-lc .yiv8135000569ad {margin-bottom:10px;padding:0 0;}#yiv8135000569 #yiv8135000569actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv8135000569 #yiv8135000569activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv8135000569 #yiv8135000569activity span {font-weight:700;}#yiv8135000569 #yiv8135000569activity span:first-child {text-transform:uppercase;}#yiv8135000569 #yiv8135000569activity span a {color:#5085b6;text-decoration:none;}#yiv8135000569 #yiv8135000569activity span span {color:#ff7900;}#yiv8135000569 #yiv8135000569activity span .yiv8135000569underline {text-decoration:underline;}#yiv8135000569 .yiv8135000569attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv8135000569 .yiv8135000569attach div a {text-decoration:none;}#yiv8135000569 .yiv8135000569attach img {border:none;padding-right:5px;}#yiv8135000569 .yiv8135000569attach label {display:block;margin-bottom:5px;}#yiv8135000569 .yiv8135000569attach label a {text-decoration:none;}#yiv8135000569 blockquote {margin:0 0 0 4px;}#yiv8135000569 .yiv8135000569bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv8135000569 .yiv8135000569bold a {text-decoration:none;}#yiv8135000569 dd.yiv8135000569last p a {font-family:Verdana;font-weight:700;}#yiv8135000569 dd.yiv8135000569last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv8135000569 dd.yiv8135000569last p span.yiv8135000569yshortcuts {margin-right:0;}#yiv8135000569 div.yiv8135000569attach-table div div a {text-decoration:none;}#yiv8135000569 div.yiv8135000569attach-table {width:400px;}#yiv8135000569 div.yiv8135000569file-title a, #yiv8135000569 div.yiv8135000569file-title a:active, #yiv8135000569 div.yiv8135000569file-title a:hover, #yiv8135000569 div.yiv8135000569file-title a:visited {text-decoration:none;}#yiv8135000569 div.yiv8135000569photo-title a, #yiv8135000569 div.yiv8135000569photo-title a:active, #yiv8135000569 div.yiv8135000569photo-title a:hover, #yiv8135000569 div.yiv8135000569photo-title a:visited {text-decoration:none;}#yiv8135000569 div#yiv8135000569ygrp-mlmsg #yiv8135000569ygrp-msg p a span.yiv8135000569yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv8135000569 .yiv8135000569green {color:#628c2a;}#yiv8135000569 .yiv8135000569MsoNormal {margin:0 0 0 0;}#yiv8135000569 o {font-size:0;}#yiv8135000569 #yiv8135000569photos div {float:left;width:72px;}#yiv8135000569 #yiv8135000569photos div div {border:1px solid #666666;min-height:62px;overflow:hidden;width:62px;}#yiv8135000569 #yiv8135000569photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv8135000569 #yiv8135000569reco-category {font-size:77%;}#yiv8135000569 #yiv8135000569reco-desc {font-size:77%;}#yiv8135000569 .yiv8135000569replbq {margin:4px;}#yiv8135000569 #yiv8135000569ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv8135000569 #yiv8135000569ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv8135000569 #yiv8135000569ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv8135000569 #yiv8135000569ygrp-mlmsg select, #yiv8135000569 input, #yiv8135000569 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv8135000569 #yiv8135000569ygrp-mlmsg pre, #yiv8135000569 code {font:115% monospace;}#yiv8135000569 #yiv8135000569ygrp-mlmsg * {line-height:1.22em;}#yiv8135000569 #yiv8135000569ygrp-mlmsg #yiv8135000569logo {padding-bottom:10px;}#yiv8135000569 #yiv8135000569ygrp-msg p a {font-family:Verdana;}#yiv8135000569 #yiv8135000569ygrp-msg p#yiv8135000569attach-count span {color:#1E66AE;font-weight:700;}#yiv8135000569 #yiv8135000569ygrp-reco #yiv8135000569reco-head {color:#ff7900;font-weight:700;}#yiv8135000569 #yiv8135000569ygrp-reco {margin-bottom:20px;padding:0px;}#yiv8135000569 #yiv8135000569ygrp-sponsor #yiv8135000569ov li a {font-size:130%;text-decoration:none;}#yiv8135000569 #yiv8135000569ygrp-sponsor #yiv8135000569ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv8135000569 #yiv8135000569ygrp-sponsor #yiv8135000569ov ul {margin:0;padding:0 0 0 8px;}#yiv8135000569 #yiv8135000569ygrp-text {font-family:Georgia;}#yiv8135000569 #yiv8135000569ygrp-text p {margin:0 0 1em 0;}#yiv8135000569 #yiv8135000569ygrp-text tt {font-size:120%;}#yiv8135000569 #yiv8135000569ygrp-vital ul li:last-child {border-right:none !important;}#yiv8135000569
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2016-10-05 14:58:46 UTC
Permalink
Fala Vinicius,
só uma particularidade pouco conhecida do printf é a opção -v VAR. Com essa
opção, vc não precisa fazer atribuição, veja:

$ var=1
$ printf -v var %010d $(($var + 1))
$ echo $var
0000000002

Então, para passar uma linha (gráfica) por todo o terminal, experimente o
seguinte:

$ printf -v linha "%$(tput cols)s" ' '
$ printf -v traco "\e(0\x71\e(B"
$ echo -n ${linha// /$traco}
───────────────────────────────────────────────────────────────────────────────────────────────────

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 Vinicius Ruiz ***@yahoo.com.br [shell-script]
Pessoal Bom dia Tudo Bem ?
Gostaria que dessem uma luz sobre como fazer funcionar o seguinte caso.
Tenho dois valores de variavel
var1=0000000001
var2=0
var2=$(( $var2 + 1 ))
O resultado de var2 ficará será 2 ... var2=2
Mas eu preciso que o var2 fique com nesse formato *000000000*2
E a cada incremento se chegar em fique assim *000000001**0*
Alguém poderia dar um luz pois o contador exclui os "zeros" a esquerda quando o somo.
Obrigado.
No aguardo.
Vinicius
Vinicius viruiz777@yahoo.com.br [shell-script]
2016-10-05 22:22:56 UTC
Permalink
Fantástico Julio

Enviado por BlueMail
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Fala Vinicius,
só uma particularidade pouco conhecida do printf é a opção -v VAR. Com essa
$ var=1
$ printf -v var %010d $(($var + 1))
$ echo $var
0000000002
Então, para passar uma linha (gráfica) por todo o terminal, experimente o
$ printf -v linha "%$(tput cols)s" ' '
$ printf -v traco "\e(0\x71\e(B"
$ echo -n ${linha// /$traco}
───────────────────────────────────────────────────────────────────────────────────────────────────
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 Vinicius Ruiz ***@yahoo.com.br [shell-script]
Pessoal Bom dia Tudo Bem ?
Gostaria que dessem uma luz sobre como fazer funcionar o seguinte
caso.
Post by Vinicius Ruiz ***@yahoo.com.br [shell-script]
Tenho dois valores de variavel
var1=0000000001
var2=0
var2=$(( $var2 + 1 ))
O resultado de var2 ficará será 2 ... var2=2
Mas eu preciso que o var2 fique com nesse formato *000000000*2
E a cada incremento se chegar em fique assim *000000001**0*
Alguém poderia dar um luz pois o contador exclui os "zeros" a
esquerda
Post by Vinicius Ruiz ***@yahoo.com.br [shell-script]
quando o somo.
Obrigado.
No aguardo.
Vinicius
Tiago Tarifa Munhoz tiagotarifa@gmail.com [shell-script]
2016-10-17 22:35:01 UTC
Permalink
Fala Julião, tudo em ordem?

Eu fiz o curso com você em julho, sou o cara cabeludo que não parava de
tossir.. :0

Saudades de você e do curso. Foi muito legal.

Deixando o melodrama de lado, eu estou estudando o printf com o seu
livro. E andei pesquisando na internet e achei alguém falando da opção
%.s ou %.0s

Ele disse que se você fizer isso:

$ printf "=%.0s" Rei Rei Rei, o Tiago é o melhor

o printf mostrará isso:

========

Não importa qual o parâmetro passado, seja ele um caractere
ou palavra, o printf trocará pelo caractere informado antes do %

neste caso eu fiz isso

$ eval printf \"\\e\(0\\x71\\e\(B\%\.0s\" {1..$(tput cols)}

ficou feio que doí, mas saiu em uma linha. hehe

Aproposito, procurei mas não achei o significado do "\e(0\x71\e(B"


Em Wed, 5 Oct 2016 11:58:46 -0300
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Fala Vinicius,
só uma particularidade pouco conhecida do printf é a opção -v VAR.
$ var=1
$ printf -v var %010d $(($var + 1))
$ echo $var
0000000002
Então, para passar uma linha (gráfica) por todo o terminal,
$ printf -v linha "%$(tput cols)s" ' '
$ printf -v traco "\e(0\x71\e(B"
$ echo -n ${linha// /$traco}
───────────────────────────────────────────────────────────────────────────────────────────────────
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 Vinicius Ruiz ***@yahoo.com.br [shell-script]
Pessoal Bom dia Tudo Bem ?
Gostaria que dessem uma luz sobre como fazer funcionar o seguinte caso.
Tenho dois valores de variavel
var1=0000000001
var2=0
var2=$(( $var2 + 1 ))
O resultado de var2 ficará será 2 ... var2=2
Mas eu preciso que o var2 fique com nesse formato *000000000*2
E a cada incremento se chegar em fique assim *000000001**0*
Alguém poderia dar um luz pois o contador exclui os "zeros" a
esquerda quando o somo.
Obrigado.
No aguardo.
Vinicius
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2016-10-18 21:08:03 UTC
Permalink
Bouuua Tiago,
havia me esquecido de citar essa forma tb, mas eu estava muito sintonizado
em mostrar o uso da opção -v VAR. Já que vc lembrou, poemos ainda dar uma
simplificada, fazendo:

$ eval 'printf "\e(0\x71\e(B%.s"' {1..$(tput cols)}

Assim, na 1a. passada do eval, ele fará somente a expansão de chaves e na
segunda executará o printf colocando um travessão para cada elemento gerado
pelas chaves.

Veja:

$ echo -e "\e(0\x71\e(B"
─

Agora dá para ver que \e(0\x71\e(B é a escape sequence que gera um
travessão gráfico (do tamanho do sublinha (_), mas na altura do hífen(-)).

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 Tiago Tarifa Munhoz ***@gmail.com [shell-script]
Fala Julião, tudo em ordem?
Eu fiz o curso com você em julho, sou o cara cabeludo que não parava de
tossir.. :0
Saudades de você e do curso. Foi muito legal.
Deixando o melodrama de lado, eu estou estudando o printf com o seu
livro. E andei pesquisando na internet e achei alguém falando da opção
%.s ou %.0s
$ printf "=%.0s" Rei Rei Rei, o Tiago é o melhor
========
Não importa qual o parâmetro passado, seja ele um caractere
ou palavra, o printf trocará pelo caractere informado antes do %
neste caso eu fiz isso
$ eval printf \"\\e\(0\\x71\\e\(B\%\.0s\" {1..$(tput cols)}
ficou feio que doí, mas saiu em uma linha. hehe
Aproposito, procurei mas não achei o significado do "\e(0\x71\e(B"
Em Wed, 5 Oct 2016 11:58:46 -0300
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Fala Vinicius,
só uma particularidade pouco conhecida do printf é a opção -v VAR.
$ var=1
$ printf -v var %010d $(($var + 1))
$ echo $var
0000000002
Então, para passar uma linha (gráfica) por todo o terminal,
$ printf -v linha "%$(tput cols)s" ' '
$ printf -v traco "\e(0\x71\e(B"
$ echo -n ${linha// /$traco}
────────────────────────────────────────────────────────────
───────────────────────────────────────
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
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 Vinicius Ruiz ***@yahoo.com.br [shell-script]
Pessoal Bom dia Tudo Bem ?
Gostaria que dessem uma luz sobre como fazer funcionar o seguinte caso.
Tenho dois valores de variavel
var1=0000000001
var2=0
var2=$(( $var2 + 1 ))
O resultado de var2 ficará será 2 ... var2=2
Mas eu preciso que o var2 fique com nesse formato *000000000*2
E a cada incremento se chegar em fique assim *000000001**0*
Alguém poderia dar um luz pois o contador exclui os "zeros" a
esquerda quando o somo.
Obrigado.
No aguardo.
Vinicius
Tiago Tarifa tiagotarifa@gmail.com [shell-script]
2016-10-18 22:30:27 UTC
Permalink
Obrigado pela dica Julio!
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Bouuua Tiago,
havia me esquecido de citar essa forma tb, mas eu estava muito sintonizado
em mostrar o uso da opção -v VAR. Já que vc lembrou, poemos ainda dar uma
$ eval 'printf "\e(0\x71\e(B%.s"' {1..$(tput cols)}
Assim, na 1a. passada do eval, ele fará somente a expansão de chaves e na
segunda executará o printf colocando um travessão para cada elemento gerado
pelas chaves.
$ echo -e "\e(0\x71\e(B"
─
Agora dá para ver que \e(0\x71\e(B é a escape sequence que gera um
travessão gráfico (do tamanho do sublinha (_), mas na altura do hífen(-)).
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 Tiago Tarifa Munhoz ***@gmail.com [shell-script]
Fala Julião, tudo em ordem?
Eu fiz o curso com você em julho, sou o cara cabeludo que não parava de
tossir.. :0
Saudades de você e do curso. Foi muito legal.
Deixando o melodrama de lado, eu estou estudando o printf com o seu
livro. E andei pesquisando na internet e achei alguém falando da opção
%.s ou %.0s
$ printf "=%.0s" Rei Rei Rei, o Tiago é o melhor
========
Não importa qual o parâmetro passado, seja ele um caractere
ou palavra, o printf trocará pelo caractere informado antes do %
neste caso eu fiz isso
$ eval printf \"\\e\(0\\x71\\e\(B\%\.0s\" {1..$(tput cols)}
ficou feio que doí, mas saiu em uma linha. hehe
Aproposito, procurei mas não achei o significado do "\e(0\x71\e(B"
Em Wed, 5 Oct 2016 11:58:46 -0300
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Fala Vinicius,
só uma particularidade pouco conhecida do printf é a opção -v VAR.
$ var=1
$ printf -v var %010d $(($var + 1))
$ echo $var
0000000002
Então, para passar uma linha (gráfica) por todo o terminal,
$ printf -v linha "%$(tput cols)s" ' '
$ printf -v traco "\e(0\x71\e(B"
$ echo -n ${linha// /$traco}
────────────────────────────────────────────────────────────
───────────────────────────────────────
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
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 Vinicius Ruiz ***@yahoo.com.br [shell-script]
Pessoal Bom dia Tudo Bem ?
Gostaria que dessem uma luz sobre como fazer funcionar o seguinte caso.
Tenho dois valores de variavel
var1=0000000001
var2=0
var2=$(( $var2 + 1 ))
O resultado de var2 ficará será 2 ... var2=2
Mas eu preciso que o var2 fique com nesse formato *000000000*2
E a cada incremento se chegar em fique assim *000000001**0*
Alguém poderia dar um luz pois o contador exclui os "zeros" a
esquerda quando o somo.
Obrigado.
No aguardo.
Vinicius
itamarnet@yahoo.com.br [shell-script]
2016-10-19 09:54:51 UTC
Permalink
Só para dar outro pitaco

Para quem não tem a versão 4 do Bash o trecho:


{1..$(tput cols)}





Pode ser trocado por:


$(seq -s ' ' 1 $(tput cols))



[]'s
Itamar

Julio Cardoso julios.fedora@gmail.com [shell-script]
2016-10-05 22:20:56 UTC
Permalink
var2=$( expr $var2 + 1 )
Post by Vinicius Ruiz ***@yahoo.com.br [shell-script]
Pessoal Bom dia Tudo Bem ?
Gostaria que dessem uma luz sobre como fazer funcionar o seguinte caso.
Tenho dois valores de variavel
var1=0000000001
var2=0
var2=$(( $var2 + 1 ))
O resultado de var2 ficará será 2 ... var2=2
Mas eu preciso que o var2 fique com nesse formato *000000000*2
E a cada incremento se chegar em fique assim *000000001**0*
Alguém poderia dar um luz pois o contador exclui os "zeros" a esquerda quando o somo.
Obrigado.
No aguardo.
Vinicius
Loading...