Bash for 루프가 폴더를 생성합니다. 일부 문자를 이스케이프해야 합니까?

Bash for 루프가 폴더를 생성합니다. 일부 문자를 이스케이프해야 합니까?

이름은 같지만 증분 카운터가 있는 파일 5개를 만들고 싶습니다.

만약 내가한다면:

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

hallo_1등을 받습니다.hallo_2hallo_3

만약 내가한다면:

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

나는 얻다:company-price-.rb

뭔가로부터 탈출해야 하는 걸까요? bash는 내가 $i변수에서 삭제/빼기를 원한다고 생각합니까 ?

도망가더라도 .여전히 -같은 결과를 얻게 될 것입니다. 어떤 팁이 있나요?

답변1

변수 확장에는 중괄호 형식을 사용해야 합니다.

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

그렇지 않으면 . 대신 변수 확장 bash으로 처리됩니다 .$i_spec$i

~에서bash 수동:

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.

관련 정보