2016-11-24 3 views
0

Я хочу поместить весь каталог, содержащий файлы PDF на другом сервере с smbclientscript. Мой сценарий:smbclient скрипт, поместивший несколько файлов с переменной

#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 бея Ls | grep pdf. Для других файлов оболочка отвечает файлом: команда не найдена.

ответ

0

В Баш

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 "{}" 
+0

Не работает :( –

+0

Извините за мою опечатку. Это '-I' не' -i'. Я знаю, как использовать 'subclient', но' xargs' должен решить вашу проблему, и это отличный инструмент, вы можете увидеть, как это работает, используя 'man xargs' в * UNIX. Вы также можете попробовать эту команду' ls | grep '.pdf $' | xargs -I {} smbclient -U "server \ user"% pw // some/direc/tory/bla/bla -D 'to/another/dir'' -c "{}" – catssay

0

Я получил решение быть собой:

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 

Спасибо!

+0

Это вызовет проблему, когда одно из ваших файлов имеет пробелы. Например, этот файл 'this is test.pdf' приведет к 4 файлам 'this'' '' '' '' test.pdf', это связано с тем, что при расширении bash оно будет использовать значение переменной IFS в качестве разделителя, значение по умолчанию 'IFS' равно , поэтому это вызовет проблему, когда имя файла содержит пробел. Для решения этой проблемы вы можете использовать 'IFS = $ (echo -e '\ t')' для установки IFS с . и в блоке 'for', убедитесь, что sround' $ i' с двойной кавычкой. – catssay

 Смежные вопросы

  • Нет связанных вопросов^_^