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

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

Re: [shell-script] Alternativa ao comando set usando read


From: phfbettetga
Subject: Re: [shell-script] Alternativa ao comando set usando read
Date: Fri, 9 Nov 2018 14:40:29 -0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.0

Olá Robson, com here strings funciona mas acho que dá problema com o IFS

array=('a' 'b c' 'd' 'e')
read var1 var2 var3 var4 < "${array[@]}"
bash: "${array[@]}": redirecionamento ambíguo

read var1 var2 var3 var4 <<< "${array[@]}"
echo $var1 $var2 $var3 $var4
a b c d e
echo $var1-$var2-$var3-$var4
a-b-c-d e

Nesse caso um loop resolve melhor

for i in "${array[@]}";do echo "$i";done
a
b c
d
e

for i in "${array[@]}";do read var$((++j)) <<<"$i";done
echo -$var1- -$var2- -$var3- -$var4-
-a- -b c- -d- -e-

Pode ser alterando o IFS também,
mas aí teria que ter algum separador diferente.
O livro do mestre Júlio tem um capítulo que trata
do read com todos esses assuntos :) vale a pena.
Abraços Paulo


On 09/11/2018 13:42, Robson Alexandre address@hidden [shell-script] wrote:
> 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
> 
> 
> --------------------------------------------------------------------------------------------------------------
> Enviado por: Robson Alexandre <address@hidden>
> --------------------------------------------------------------------------------------------------------------
> Responder através da web 


reply via email to

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