• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

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

bash 来源:AndrewC 10次浏览

我有一个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删除的参数)。

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


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)