Usando uma variável de incremento em uma linha de comando bash para loop?

3

Estou usando uma linha de comando bash for-loop para agrupar um grupo de arquivos e gostaria de acrescentar um dígito incremental.

Algo parecido com isto:

j=1;for i in *.bak; do echo {$j++: >> files.grp;cat $i >> files.grp; echo }, >> files.grp; done

Assim, a saída seria assim:

{1:"file1 contents"},{2:"file2 contents"},
    
por Alan 26.01.2011 / 09:04

2 respostas

7

O que você precisa fazer é:

j=$(($j+1))

ou use

$((j++))
    
por 26.01.2011 / 09:21
3
# file1.bak
hallo

# some other file.bak
H?llo*

# a!file.bak
new!
line"

Processado com o script:

j=1
for i in *.bak; do
  echo "{$((j++)):$(cat "$i")}" >> files.grp
done

Escreve o seguinte em files.grp:

{1:hallo}
{2:H?llo*}
{3:new!
line"}
    
por 26.01.2011 / 09:59