2013-07-04 40 views
1

我在awk腳本閱讀教程,並觀察這種奇怪的行爲,爲什麼在執行這個awk腳本甚至同出一循環結構像whilefor不停地詢問了一些迭代。如果我們輸入CTRL+D(EOF),它將停止提示輸入另一個號碼。awk中使用了循環結構

#!/bin/awk -f 
BEGIN { 
    print "type a number"; 
} 
{ 
    print "The square of ", $1, " is ", $1*$1; 
    print "type another number"; 
} 
END { 
    print "Done" 
} 

請解釋一下上面的awk腳本

回答

2

awk繼續工作直到文件結束。由於在這種情況下輸入(STDIN)永遠不會結束,因爲您不斷輸入數字或按回車鍵,它會導致無限循環。

當你點擊CTRL + d您指定的awk腳本EOF被退出循環到達那裏。

+1

感謝您的明確答案,我現在明白了。 –

0

的這種行爲試試這個,然後輸入0退出

BEGIN { 
    print "type a number"; 
} 
{ 
    if($1==0) 
     exit; 
    print "The square of ", $1, " is ", $1*$1; 
    print "type another number"; 
} 
END { 
    print "Done" 
} 
0

距離著名的The AWK Programming Language

如果不提供輸入文件到命令行上的awk腳本,awk會將該程序應用於您在終端上輸入的任何內容,直到您鍵入文件結束信號(在Unix系統上爲control-d S)。