bash中双括号构造内的参数计数变量

时间:2012-01-07 11:04:31

标签: bash

根据我在tldp.org上所读到的,双括号构造(( ... ))允许您引用不带$前缀的bash变量。但是,在尝试引用参数计数变量$#时,脚本拒绝使用

bash: ((: i < # : syntax error: operand expected (error token is "# ")
奇怪的是,当哈希加前缀时,脚本可以正常工作

供您参考,这是工作代码:

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

我的问题是:如何知道包含前缀的时间是否正确以及何时不包含?

1 个答案:

答案 0 :(得分:2)

只要$不是SPECIAL PARAMETER,您就可以放弃(( ))。另外,如果您在$内进行PARAMETER EXPANSION,还需要{{1}}