获取除bash函数外的所有前N个参数

时间:2019-02-13 20:32:06

标签: bash function shell

我知道如何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

2 个答案:

答案 0 :(得分:9)

在您完成对shift的操作后,只需{{3}}就可以了;剩下的将在start = data1(1:4,:); % This is not necessarily a good initialization! result1 = kmeans(data1, 4, 'Start',start); 中。

这具有与所有POSIX shell兼容的优点(下面使用的唯一扩展名是"$@",并且是一个广泛使用的扩展名,甚至在local中也可用)。

dash

答案 1 :(得分:6)

您可以使用数组切片符号:

custom_scp() {
    local port=$1
    local user=$2
    local sources=("${@:3}")

    scp -P "$port" -r "${sources[@]}" "$user@myserver.com:~/"
}

引用Bash manual

  

${parameter:offset}
  ${parameter:offset:length}

     

如果 parameter @,则结果为从 offset 开始的 length 个位置参数。