2012-01-07 32 views
1

從我讀過的tldp.org中,雙括號構造((...))允許您引用不帶$前綴的bash變量。然而,試圖引用計數參數變量$#時,腳本拒絕與bash中的雙括號構造中的參數計數變量

bash: ((: i < # : syntax error: operand expected (error token is "# ") 

奇怪的是,當散列前綴工作,腳本工作正常

供您參考,這裏的工作代碼:

fun(){ 
    i=0 
    while ((i < $#)); do 
      echo $1; 
      shift 
    done 
} 

我的問題是:我怎麼知道什麼時候是正確的,包括前綴,當它是不是?

回答

2

只要它不是SPECIAL PARAMETER,您可以放棄$。另外,如果您正在做PARAMETER EXPANSION裏面(())您還需要$

+0

謝謝你的解釋。你知道我在哪裏可以找到有關'(())'結構的更好的文檔嗎? – seininn 2012-01-07 12:59:51