smbclient 脚本将多个文件放入变量

smbclient script putting several files with variable

我想使用 smbclientscript 将包含 pdf 文件的整个目录放在另一台服务器上。我的脚本:

    #Set variable for reports
variable=`ls | grep pdf`

smbclient -U "server\user"%pw //some/direc/tory/bla/bla << Commands
cd to/another/dir
put $variable
exit
Commands

确实可以,但问题是它只能复制listet bei ls的第一个文件| grep.pdf 对于其他文件,shell 响应为 file:command 未找到。

在bash

variable=`ls |grep pdf`

将获得带有 STDOUT 的字符串变量,而不是数组。这不是你想要的。

也许xargs会对您有所帮助。你可以按照下面的方式做,但我认为这不是一个优雅的解决方案。

ls | grep '.pdf$' |xargs -I{} smbclient -U "server\user"%pw //some/direc/tory/bla/bla -D 'to/another/dir' -c "{}"

我自己找到了解决方案:

cd /directory/with/files/to/copy
#Set Variable
reports=$(ls *)
for i in $reports ; do

    smbclient -U "srv\User"%pws //some/dir/bla/bla/bla << Commands
    cd another/dir/etc
    put $i
    exit
    Commands
    done

谢谢!