Читайте последнюю строку файла в скрипте bash при чтении файла построчно
Я пишу сценарий для чтения команд из файла и выполнения определенной команды. Я хочу, чтобы мой сценарий работал либо для отдельных входных аргументов, либо когда аргумент является именем файла, содержащим рассматриваемые аргументы.
Мой код ниже работает за исключением одной проблемы, он игнорирует последнюю строку файла. Итак, если файл был следующим.
file.txt
file1
file2
Приведенный ниже скрипт запускает только команду для file.txt
for currentJob in "$@"
do
if [[ "$currentJob" != *.* ]] #single file input arg
then
echo $currentJob
serverJobName="$( tr '[A-Z]' '[a-z]' <<< "$currentJob" )" #Change to lowercase
#run cURL job
curl -o "$currentJob"PisaInterfaces.xml http://www.ebi.ac.uk/msd-srv/pisa/cgi-bin/interfaces.pisa?"$serverJobName"
else #file with list of pdbs
echo "Reading "$currentJob
while read line; do
echo "-"$line
serverJobName="$( tr '[A-Z]' '[a-z]' <<< "$line" )"
curl -o "$line"PisaInterfaces.xml http://www.ebi.ac.uk/msd-srv/pisa/cgi-bin/interfaces.pisa?"$serverJobName"
done < "$currentJob"
fi
done
Конечно, есть очевидный обходной путь, когда после цикла while я повторяю шаги внутри цикла, чтобы завершить эти команды с последним файлом, но это нежелательно, поскольку любые изменения, которые я делаю внутри цикла while, должны повторяться снова. вне цикла while. Я искал в Интернете и не мог найти никого, задающего этот точный вопрос. Я уверен, что это там, но я не нашел это.
Вывод, который я получаю, выглядит следующим образом.
>testScript.sh file.txt
Reading file.txt
-file1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 642k 0 642k 0 0 349k 0 --:--:-- 0:00:01 --:--:-- 492k
Моя версия bash 3.2.48