2012-07-15 74 views
10

嗨我想寫和空主體循環。我只是希望循環計數器增加,所以我希望CPU在沒有任何IO操作的情況下保持忙碌狀態。以下是我已經寫了,但它給了我一個錯誤:空的循環Linux Shell

#!/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

您必須在循環體中至少指定一條命令。

這種用途的最佳指令ia冒號:,通常用作no-op shell command

+0

「這可能被認爲是貝殼真實的同義詞。」 - 這使得這個答案與之前的答案相同。 ;) – 2012-07-15 09:24:18

3

你可以把一個無操作命令的循環內像truefalse(分別是什麼都不做成功或失敗)。

這將是一個嚴密的循環,並會燒燬CPU。除非您想在寒冷的早晨預熱電腦,否則可以簡單地說i=1000000,並且與循環效果相同。

你試圖實現什麼?

+0

NOP不會「燒壞CPU」,它可能會顯示100%的使用率,但會產生可忽略的熱量輸出。您需要真正做好工作來預熱處理器。 – Thomas 2012-07-15 09:47:26

+0

有趣的一點。不會遞增循環計數器工作? – 2012-07-15 12:55:12

+0

可能還不夠,處理器將花費大部分時間在CMP/JNE指令中,而不是循環計數器遞增。但是循環中的一些算術指令應該這樣做(就像幾次乘法/除法)。 – Thomas 2012-07-15 18:24:43

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

如果您想延遲x秒的時間,則可以使用sleep x

+0

這不會導致此循環成爲忙等待循環。 – 2012-07-15 09:25:08