Eu quero definir a função cpfromserver no bash para que quando eu corro
$ cpfromserver xxx yyy zzz
o resultado é o mesmo que se eu tivesse digitado
$ scp [email protected]:"/some/location/xxx/xxx.txt /some/location/xxx/xxx.pdf /some/location/yyy/yyy.txt /some/location/yyy/yyy.pdf /some/location/zzz/zzz.txt /some/location/zzz/zzz.pdf" /somewhere/else/
onde funciona para qualquer número de argumentos.
(Ou seja, a função deve copiar filename.txt e filename.pdf do diretório /some/location/filename/ no remote.server para o diretório local /somewhere/else/ para cada filename que eu especificar como um argumento para a função. E faça tudo em uma única conexão ssh .)
Atualmente, eu escrevi uma função que funciona para um único argumento, e apenas faço um loop sobre ela, mas isto estabelece conexões ssh separadas para cada argumento, o que é indesejável.
Minha dificuldade é que eu só sei usar argumentos de função individualmente por sua posição ( $1 , $2 , etc.) - não como manipular toda a lista.
[Note que estou escrevendo essa função como uma ferramenta de conveniência apenas para meu próprio uso, e assim eu priorizaria minha própria facilidade de compreensão sobre como lidar com casos patológicos como nomes de arquivos com aspas ou quebras de linha neles e outros enfeites. Eu sei que os nomes de arquivos com os quais eu vou usar são bem comportados.]