【发布时间】:2019-07-07 19:16:27
【问题描述】:
我知道如何get the last argument passed to a function,但我想知道如何在前两个之后获取函数的所有参数:
例如:
function custom_scp(){
PORT=$1
USER=$2
SOURCES=`ALL_OTHER_ARGS`
scp -P $PORT -r $SOURCES $USER@myserver.com:~/
}
因此将三个文件发送到远程home 目录看起来像
$ custom_scp 8001 me ./env.py ./test.py ./haha.py
【问题讨论】:
-
顺便说一句,请参阅wiki-dev.bash-hackers.org/scripting/obsolete --
function foo() {正在以一种与 noither POSIX sh nor 兼容的方式混合 POSIX sh 和 ksh 函数声明格式i> 使用旧版 ksh。任选其一:foo() {是 POSIX 形式,function foo {是 ksh 形式。 -
顺便说一句,回复:在我的回答中使用小写名称,这是故意的。例如,
USER是一个保留的变量名。通过覆盖它,您可能会破坏稍后在同一会话中运行的其他命令。请参阅pubs.opengroup.org/onlinepubs/9699919799/basedefs/…——全大写名称用于修改系统行为的变量,小写名称保留供应用程序使用。设置与环境变量同名的 shell 变量会覆盖后者,因此命名空间规则适用于这两个集合。