函数中的BASH参数

时间:2014-12-12 18:02:35

标签: bash

是否可以创建一个脚本,提示用户输入一个数字,然后以编程方式将其用于函数/方法中的参数数量?例如:

echo "Enter Number of arguments: "
read numOfArguments

输入数字后,这将代表函数中的参数数量。因此,如果我输入5,则该方法中应该有5个预期参数:

sampleMethod(){
...Takes 5 Parameters and actual code is here
}
sampleMethod ActualArgumentsfromPrompt

如果有可能,有人可以举例说明这是怎么做的吗?我这样做是因为我想创建一个将解析日志文件的脚本,但是我需要从日志中提取与此类似的特定项:(0010,0020)。我需要的信息并不总是固定数量的项目,所以我想为一些参数生成提示。

1 个答案:

答案 0 :(得分:4)

Bash函数不会“期望”任意数量的参数 - 从语法中可以看出,函数名后面没有参数变量列表。它们以与主shell相同的方式处理参数,方法是将它们作为$1$2等进行访问。如果您需要知道传递了多少个参数,可以使用$#。< / p>

要循环遍历所有参数,常用的习惯用法是处理$1,然后使用shift将参数列表向下移动。

sampleMethod() {
    if [ $# -ne $numOfArguments ]
    then echo Wrong number of arguments -$numOfArguments expected, $# provided >&2
         return
    fi
    while [ $# -gt 0 ]; do
        arg=$1
        echo "$arg"
        shift
    done
}