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

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

Re: [shell-script] string shell


From: Enilton Angelim
Subject: Re: [shell-script] string shell
Date: Thu, 21 Nov 2013 12:26:17 -0200

Bruno,
          Não entendi o que queres, mas irei explica alguns detalhes e talvez isso o ajude.

Declarar variáveis

#Sem array ou array singular¹
$ var1="abcde"
$ echo $var1 #ou ${var[0]}

#Array
$ var1=(a b c d) #Observe que o separador é um espaço em branco " "
$ echo ${var1[1]} # 0=a, 1=b...

¹ Quero dizer que mesmo com essa sintaxe o valor também pode ser lido na chave 0.

E quando separador é "#" ou ";"?
Exemplo didático:

parser(){
    #Substitui "#" ou ";" por " "(espaço)
    var="${1//[#|;]/ }"
    #retorna: a b c 
    echo $var 
}

var3="feijao3#arroz3#macarrao3" #No email: var3=(feijao#arroz#macarrao)
var4=(feijao4 arroz4 macarrao4) #Array
var5="feijao5;arroz5;macarrao5" #No email: var5=("feijao;arroz;macarrao")

tmp_var1=($(parser "${var3}")) #Executa a função parser passando var3 como argumento e com o retorno cria o array
tmp_var2=($(parser "${var5}"))

echo ${var4[0]} #imprime valor da chave 0.
feijao4
echo ${var4[@]} #imprime todos os valores contido no array
feijao4 arroz4 macarrao4

var4[0]="${tmp_var1[2]} ${var4[0]}" #Substitui o valor contido na chave 0. 
var4=(${var4[@]}) #Recria o array var4 expandindo valores atuais de var4.

echo ${var4[0]}
macarrao3
echo ${var4[@]}
macarrao3 feijao4 arroz4 macarrao4

#Dessa forma colocamos o campo 3(chave 2) de var3 no campo1(chave 0 ) de var4.


No shell bash desconheço qualquer tipo métodos para estrutura de dados como lista.append('hello'), insert(), extend(), etc. 





#! Enilton Angelim
## F13 Tecnologia


2013/11/21 Bruno Viana <address@hidden>
 

Opa,

Obrigado a todos !!!

E agora fiquei com outras duvidas:

Quando a string é assim

var1=(abcde)
ou
var2=(a b c d e)


Fica bem tranquilo, mas e quando elas são:

var3=(feijao#arroz#macarrao)
ou
var4=(feijao arroz macarrao)
ou
var3=(feijao;arroz;macarrao)

E para essas var3 4 5 quisesse o primeiro campo de uma na outra e terceiro, e que esses campos poderiam mudar o tamanho, tipo uma hora foi "feijao", mas poderia ser "carne"


Ficaria como ?


Em Quarta-feira, 20 de Novembro de 2013 20:29, Julio C. Neves <address@hidden> escreveu:
 
Ô Enilton, sabendo isso tudo de shell, diga pro gordinho e unha de fome do seu chefe o seguinte:
- Erlon, seu fio de uma égua, o Julio Neves falou para vc me dar aumento. Gaste menos com a cerveja e capriche no meu salário!

Na 10ª edição do meu livro já esta previsto um exemplo muito parecido com esse, veja: 
$ var=(zero um dois três quatro)
$ echo \${var[{0..4}]}
${var[0]} ${var[1]} ${var[2]} ${var[3]} ${var[4]}
$ eval echo \${var[{0..4}]}
zero um dois três quatro
ou seja, não precisa daquele monte de contrabarras que vc usou, basta uma antes do cifrão para o shell não tentar resolver a variável.
Se conseguir o aumento, pague a cerveja para mim qdo eu for aí em Fortaleza. ;)

Abcs,
Julio
A partir de 02/12 estarei ministrando um curso completo de Shell no Rio de Janeiro.
@juliobash
Facebook? Neither that the cow cough...
;)




Em 20 de novembro de 2013 18:05, Enilton Angelim <address@hidden> escreveu:
 
var=(a b c d)
#e...  
#se você for curioso e doido que nem eu...
#execute
eval echo \${var\[{0..3}\]\}


#! Enilton Angelim
## F13 Tecnologia



2013/11/20 Enilton Angelim <address@hidden>
var=(a b c d) ou var[0]="a" ...
echo ${var[0]} #imprime "a"
...
#Ler os índices
for i in ${!var[@]} 
do
    echo  "Chave: $i Valor: ${var[$i]}"
done
....
#${!var[@]} : Retorna todos os índices do array



# Enilton Angelim
# Analista de Suporte Jr. 




2013/11/20 Bruno Viana <address@hidden>
 
Senhores,

Em uma conversa com um colega que desenvolve em php e que agora esta fazendo umas coisas em shell ele me perguntou como tratar strings.

Ou seja ele recebe um vetor que tem as possições e queria ler a possição x

Ai falei para ele que poderia usar o "cut" usando o delimitador conhecido com o "-d" e pegar a possição com o "-f", só que me veio a duvida se teria uma fução para tratar isso de uma forma "mais elegante" em shell.

Existe alguma diferente de cut, awk ou sed em shell ?

Atenciosamente,








reply via email to

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