是否可以创建一个脚本,提示用户输入一个数字,然后以编程方式将其用于函数/方法中的参数数量?例如:
echo "Enter Number of arguments: "
read numOfArguments
输入数字后,这将代表函数中的参数数量。因此,如果我输入5,则该方法中应该有5个预期参数:
sampleMethod(){
...Takes 5 Parameters and actual code is here
}
sampleMethod ActualArgumentsfromPrompt
如果有可能,有人可以举例说明这是怎么做的吗?我这样做是因为我想创建一个将解析日志文件的脚本,但是我需要从日志中提取与此类似的特定项:(0010,0020)
。我需要的信息并不总是固定数量的项目,所以我想为一些参数生成提示。
答案 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
}