atribua componentes de string a variáveis [duplicate]

0

Procurando uma maneira mais inteligente de fazer algo que já estou fazendo.

Eu tenho uma string: "firstbit.secondbit.thirdbit.fourthbit.fifthbit.sixthbit"

O conteúdo entre os períodos muda, mas a posição delimitada na string é importante.

Esta string algumas vezes contém apenas 3 partes: "firstbit.secondbit.thirdbit"

Eu preciso atribuir cada parte a uma variável diferente. Então, atualmente estou usando essa feia:

#!/bin/sh
var="firstbit.secondbit.thirdbit.fourthbit.fifthbit.sixthbit"

first="$(echo $var | cut -d'.' -f1 )"
second="$(echo $var | cut -d'.' -f2 )"
third="$(echo $var | cut -d'.' -f3 )"
fourth="$(echo $var | cut -d'.' -f4 )"
fifth="$(echo $var | cut -d'.' -f5 )"
sixth="$(echo $var | cut -d'.' -f6 )"

O que eu espero é algo mais como:

echo "$var" | (magic command to assign values to variables here) first second third fourth fifth sixth

Para que mais tarde eu possa:

echo "[$first]"

[firstbit]

echo "[$third]"

[terceiro]

e assim por diante.

As matrizes não são boas, pois prefiro variáveis nomeadas para este sistema. Não posso deixar de pensar que provavelmente há algo no awk que pode fazer isso, mas não estou intimamente familiarizado com ele.

Alguma opinião?

    
por teracow 14.04.2016 / 22:37

1 resposta

2
IFS=. read -r first second third fourth fifth <<< "$var"

Isso define o separador de campo como "." depois diz ao bash para ler as variáveis nomeadas a partir da entrada fornecida pelo conteúdo do seu $var .

    
por 14.04.2016 / 22:46