Como dar a variável de loop i no comando cut?

0
while [ "$i" -lt "$b" ]
        do
          export file=$(echo $a | cut -f$i -d' ')
          echo $file
          export i='echo $i + 1'
        done

Minha variável "a" tem ab cd ef e assim por diante. i precisa levar as palavras da primeira palavra à última palavra, uma de cada vez, quando os loops.

Isso deve ser feito com base no valor i ,

EX: when i=1 i should get first word, when i=2 i should get second word and so on.

Alguém pode me ajudar?

    
por bharath 13.11.2013 / 12:51

1 resposta

1

Você não precisa exportar todas as variáveis, apenas faça isso se estiver gerando um processo externo que precise encontrar suas variáveis em seu ambiente.

o bash usa colchetes para avaliar expressões de teste e parênteses redondos para avaliar expressões aritméticas:

while (( i < b ))
do
    file=$(cut -f$i -d' ' <<< "$a")
    echo $file
    (( i += 1 ))
done

Além disso, você não precisa continuar chamando cut , você pode armazenar as palavras "$ a" em uma matriz:

words=( $a )    # the variable is specifically *not* quoted here
for file in "${words[@]}"; do
    do_something_with $file
done
    
por glenn jackman 13.11.2013 / 14:40