Может быть одна из пятнадцати миллиардов причин. Некоторые из них перечислены ниже:
Проблема в том, что с только предоставленной информацией абсолютно невозможно провести какую-либо дальнейшую диагностику, что делает этот вопрос «слишком широким» (помеченным как таковой ).
Обновлено на основе вашего обновленного вопроса
Чтобы прочитать базы данных из файла, который вы передаете в качестве аргумента, вы можете использовать
for File in $(< "$1"); do
echo `date +'%m-%d-%Y %H:%M:%S'` "starting $File execute" > $Import_Success_Log
./cli.sh -a execute -i IPROD_$File -fn formrnt -user -password>> $Import_Success_Log
echo `date +'%m-%d-%Y %H:%M:%S'` "$File execute completed" >> $Import_Success_Log
done
(и аналогично для всех остальных петель)
, а затем назовите его как
sh your-script file.txt
Скрипты можно вызывать с аргументами, они будут доступны в $1
, $2
и т.д. Так что в вашем случае вы можете сделать
File="$1"
echo `date +'%m-%d-%Y %H:%M:%S'` "starting $File execute" > $Import_Success_Log
./cli.sh -a execute -i "IPROD_$File" -fn formrnt -user -password>> $Import_Success_Log
echo `date +'%m-%d-%Y %H:%M:%S'` "$File execute completed" >> $Import_Success_Log
./cli.sh -authfile "$AuthFile" -a list -t area -nof > $Import_List_File
imp_area=`grep -iw "PRD_$File" "$IGC_Import_List_File" | grep -i prod`;
, а затем вызовите скрипт как
sh your-script filename
PS :Это предполагает, что в остальной части скрипта (, особенно в части, выполняемой перед вашим фрагментом ), значение $1
не изменяется по какой-либо причине.
Если вы выполняете свой сценарий с параметрами, они автоматически сохраняются в переменных $1, $2, $3,...
Итак, если вы выполняете свой скрипт как:
sh script.sh abc.txt
тогда "abc.txt" сохраняется в переменной $1