如何编写一个对传递参数动态的bash脚本函数?

我有一个bash函数(略微简化的解释)如何编写一个对传递参数动态的bash脚本函数?

copy_to() { 

cp $1 $2 $3

}

这工作得很好:

copy_to -f /demo/example1.xml new_demo/ 

但是比方说,我想复制所有的XML文件,下面的代码会有问题:

copy_to -f /demo/*.xml new_demo/ 

很显然,我可以只写cp -f /demo/*.xml new_demo/,但反正是有得到copy_to功能的文件列表的工作(这传递的不仅仅是3个参数)以及单个文件?

回答:

[email protected]$*其中包含所有参数的列表。你应该使用[email protected],因为它在双引号内工作。否则,包含空格的文件名会破坏您的代码。

copy_to() { 

cp "[email protected]"

}

如果参数之一是特殊的,你可以使用shift命令从参数列表中删除它,就像这样:

example() { 

destination="$1"

shift

echo "copying [email protected] to $destination"

}

shift从列表中移除的第一个参数,因此您必须先将其保存在其他位置。拨打shift后,$1的内容将为$2,$2将包含的内容为$3等等。 [email protected]扩展为所有参数(不包括那些被shift删除的参数)。

请注意,您不能从参数列表的仅从一开始就移除参数。

回答:

由于Scytale表示$ @和$ *包含所有参数的列表。 $#包含参数计数。

您可以考虑使用getopts command进行参数解析。

问候

回答:

如果你需要遍历的参数:

f() { 

for arg

do

do_something $arg

done

}

in [email protected]for arg(:for arg in [email protected]明确)暗示。

以上是 如何编写一个对传递参数动态的bash脚本函数? 的全部内容, 来源链接: utcz.com/qa/259690.html

回到顶部