2013-06-15 3 views
0

Из командной строки я могу запустить скрипт python с некоторыми аргументами, и все хорошо.Как запустить команду в скрипте bash, который получает свои аргументы из файла csv

Проблема у меня есть, я пытаюсь запустить этот скрипт (несколько других) много раз, используя скрипт bash, который каждый раз считывает аргументы из файла CSV. Аргументы включают «учетную запись», которая является доменным именем «password1» & «password2», которые являются паролями, которые могут содержать специальные символы.

Это мой сценарий далеко:

#!/bin/bash 

INPUT=accountlist.csv 
OLDIFS=$IFS 
IFS=, 
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; } 
while read -r account $password1 $password2 
do 

/tmp/migration_imapcopy $account $password1 $password2 
/tmp/migration_markmigrated $account 
/tmp/migration_dnscheck abel $account 
/tmp/migration_imapcopy $account $password1 $password2 

done < $INPUT 
IFS=$OLDIFS 

Моя проблема, когда я запускаю этот скрипт, выход из различных сценариев Python (те, которые используют переменные пароля) позволяет предположить, что их проблема входа в систему, т.е. переменные пароля неверны.

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

Может ли кто-нибудь пролить свет?

+0

Цитата переменных: '' $ account "' – Kevin

+0

вы используете 'abelpass' и' entapass' в 'read', но' $ password1' и '$ password2' в теле цикла while. Эти опечатки, или они на самом деле находятся в вашем скрипте? – doubleDown

ответ

2
while read -r account abelpass entapass 

Вы читаете abelpass & entapass но проходя password1 и password2! Разве вы не хотели использовать

while read -r account password1 password2 

?

+1

Вы также можете префикс команды 'read' с правильным значением' IFS', избегая необходимости сохранения старого значения. 'while IFS =, read -r account password1 password2'. – chepner

+0

Простите, да, я изменил имена для публикации здесь, но забыл эти два. Это не проблема ... Я обновил сообщение соответственно. Спасибо –

+0

@DaveLough Перечислите переменные «$ account» «$ password1:« $ password2 »для всех вызовов. Вы проверили, что аргументы получены правильно в скрипте python, напечатав их? –

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