2014-09-10 4 views
0

Я пытаюсь запустить пакет python с именем mETL из PuTTY и использовать его во всех файлах, содержащихся в папке. Пакет python является mETL, и я использую его для загрузки данных, содержащихся в 3 файлах .csv, называемых upload-A.csv, upload-B.csv и upload-C.csvСценарий Bash для выполнения пакета python для всех файлов в папке

Все работает отлично, когда я делаю этот процесс вручную, используя следующие команды:

metl -m migration.pickle -t new_migration.pickle -s folder_test/upload-A.csv config3.yml 
metl -m migration.pickle -t new_migration.pickle -s folder_test/upload-B.csv config3.yml 
metl -m migration.pickle -t new_migration.pickle -s folder_test/upload-C.csv config3.yml 

Все данные из каждого файла правильно загружены или обновлены, а маринованные файлы обновляются соответственно.

Но вместо того, чтобы делать это вручную, я хочу, чтобы сделать петлю, которая делает это для всех файлов, содержащихся в моем «folder_test /» папку, для которой я попытался следующий Bash скрипт:

folder_var=folder_test 
for x in $folder_var 
do 
metl -m migration.pickle -t new_migration.pickle -s $x config3.yml 
done 

Что происходит после того, как это то, что файлы рассола создаются, но данные не загружаются в базу данных.

+0

вы можете форматировать команды, которые вы используете в более читаемым способом, не может многое из этого понять. – g4ur4v

ответ

1

Попробуйте

for x in folder_test/* 
do 
metl -m migration.pickle -t new_migration.pickle -s "${x}" config3.yml 
done 
+0

1) не используйте 'ls', используйте' for x в папке_test/* ', 2) для защиты имен файлов с пробелами, убедитесь, что вы указываете' '$ x'', где бы он ни использовался. –

+0

Спасибо за предложение об изменениях. – g4ur4v

+0

Он отлично работал, спасибо большое! –