如何编写一个对传递参数动态的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