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

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

Alternativa ao comando set usando read


From: Robson Alexandre
Subject: Alternativa ao comando set usando read
Date: Tue, 13 Nov 2018 01:51:40 -0200

Mestre Júlio,

        tô fazendo isso tudo no bash. Eu ainda vou aprender esse ksh pois já vi várias pessoas falando muito bem deste shell.
        Realmente, eu acabei fazendo uma salada usando o set desnecessariamente, pois buscava uma maneira do read ler as posições do array. Como bem disseram, só manipulando o IFS.
if [[ "$texto" =~ ^(/[^@ ]+)(@[^ ]+)?\ ?(.*)? ]]; then
  primeiro=${BASH_REMATCH[1]}
  segundo=${BASH_REMATCH[2]}
  terceiro=${BASH_REMATCH[3]}
fi
        Não havia pensado nestas possibilidade que vc e o Itamar passaram. Um outro colega sugeriu a seguinte "gambiarra":
if [[ "$texto" =~ ^(/[^@ ]+)(@[^ ]+)?\ ?(.*)? ]]; then
  IFS='|' read match primeiro segundo terceiro < <(printf "%s|" "${BASH_REMATCH[@]}")
fi


Atenciosamente
Robson Alexandre



Em sex, 9 de nov de 2018 21:37, 'Julio C. Neves' address@hidden [shell-script] <address@hidden> escreveu:
 

Fala Robson,
se o seu Shell for bash e vc usar Here Strings (<<<) teu problema está resolvido, tipo read a b c <<< "1 2 3".
Se for ksh ou sh vc erá de fazer echo 1 2 3 | read a b c.

Mas no seu caso específico, para que isso? BASH_REMATCH já é uma variável do tipo vetor (array) cujo elemento índice 0 (zero) contem todo o casamento da ER e nos elementos seguintes, o que casou com cada um dos grupos (similar aos retrovisores)..

Vou aproveitar para fazer um marketing para o pessoal do RJ: a partir do dia 17 estarei dando um treinamento presencial de shell (em 40 horas) no RJ (no Centro) em 4 sábados. Como ainda sobraram umas poucas vagas e já está quase na hora, o Paulo Henrique (da Escola Linux), que está promovendo o curso me pediu para avisá-los que fará uma redução substancial no preço. Entre em contato com ele via address@hidden.

Se vc mora em outro local, a Livra-TE (Tecnologia & Educação em Sw Livre) + Dicas-l oferecerá um belíssimo desconto (50%++) em cursos referentes a Shell em ensino à distancia. Veja os cursos em: www.dicas-l.com.br/educacao.

Abraços,
Julio

» Não tem tempo para fazer um curso presencial?
» Na sua cidade não tem nenhum bom curso de Linux?
» Conheça nosso portal educacional e estude conosco: 



Também damos treinamento em sua empresa
em qualquer cidadecom certificado e nota fiscal.



Em sex, 9 de nov de 2018 às 13:48, Robson Alexandre address@hidden [shell-script] <address@hidden> escreveu:
 

Boa tarde shelleiros,

    gostaria de saber se há alguma alternativa ao comando set usando o read, por exemplo, para atribuir valores a variáveis.
Meu código segue abaixo:
[[ "$texto" =~ ^(/[^@ ]+)(@[^ ]+)?\ ?(.*)? ]] && {
  set -- "${BASH_REMATCH[@]}"
  var1=$2
  var2=$3
  var3=$4
}
Minha dúvida é se há alguma alternativa para atribuição das variáveis usando read, como por exemplo:
array=('a' 'b c' 'd' 'e')
read var1 var2 var3 var4 < "${array[@]}"

Atenciosamente,

Robson Alexandre

--
Atenciosamente

Robson Alexandre

reply via email to

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