2012-07-15 2 views
10

안녕하세요, 비어있는 몸 루프를 쓰고 싶습니다. 난 루프 카운터가 증가하기를 원하기 때문에 CPU가 IO 작업없이 바쁠 수 있기를 바란다. 여기에 내가 쓴 것입니다 그러나 그것은 나에게 오류가 있습니다 : 당신은 true 또는 false (각각 성공 여부에 아무것도하지 않고)처럼 루프 내부에 어떤 연산 명령을 넣을 수빈 몸체 For 루프 리눅스 쉘

#!/bin/bash 
for (( i = 0 ; i <= 1000000; i++ )) 
do 
done 


[email protected]:~# ./forLoop 
./forLoop: line 4: syntax error near unexpected token `done' 
./forLoop: line 4: `done' 

답변

23

루프 본문에 하나 이상의 명령을 지정해야합니다.

이러한 목적에 가장 적합한 것은 으로 일반적으로 사용되는 :의 콜론입니다.

+0

"내장 된 쉘의 동의어로 간주 될 수 있습니다." - 이것은이 답변을 이전 답변과 동일하게 만듭니다. ;) –

3

합니다.

이것은 단단한 루프가되어 CPU를 태울 것입니다. 추운 아침에 컴퓨터를 워밍업하고 싶지 않다면, 간단히 i=1000000이라고 말하고 루프와 동일한 효과를 낼 수 있습니다.

달성하려는 목표는 무엇입니까?

+0

NOP는 "CPU를 굽지 않습니다"라고 표시하면 100 % 사용량을 표시하지만 열 발생량은 무시할 수 있습니다. 실제로 프로세서를 워밍업해야합니다. – Thomas

+0

흥미로운 점. 루프 카운터를 증가시키지 않을까요? –

+0

아마도 충분하지는 않지만 프로세서는 루프 카운터 증분 대신 CMP/JNE 명령에서 대부분의 시간을 소비하게됩니다. 그러나 루프에서 몇 가지 산술 명령어가 필요합니다 (몇 곱셈/나누기와 같이). – Thomas

1
#!/bin/bash 
let i=0 
while [[ $i -le 1000000 ]]; do 
    let i++ 
done 
0

x 초 동안 지연 시키려면 sleep x을 사용할 수 있습니다.

+0

이 루프는 통화 대기 루프가되지 않습니다. –