Bash para pastas de criação de loop; eu tenho que escapar de alguns chars?

2

Eu quero criar 5 arquivos com o mesmo nome, mas com um contador incremental.

Se eu fizer:

for i in {1..5}; do touch hallo_$i; done

Eu recebo hallo_1 , hallo_2 , hallo_3 , etc.

Se eu fizer:

for i in {1..5}; do touch company-price-$i_spec.rb; done

Eu recebo: company-price-.rb

Eu tenho que escapar de alguma coisa? Será que o bash acha que eu quero remover / subtrair da variável $i ?

Se eu escapar de . e - , ainda recebo o mesmo resultado. Alguma dica?

    
por PiNg2Eiw 04.07.2014 / 11:40

1 resposta

4

Você deve usar o formato de expansão da variável:

for i in {1..5}; do touch company-price-${i}_spec.rb; done

caso contrário, bash verá $i_spec como uma expansão variável, não $i .

De bash manual :

The basic form of parameter expansion is ${parameter}. The value of 
parameter is substituted. The braces are required when parameter is a
positional parameter with more than one digit, or when parameter is 
followed by a character that is not to be interpreted as part of its name.
    
por 04.07.2014 / 11:42

Tags