我正在编写一个脚本来从文件中读取命令并执行特定命令。我希望我的脚本适用于单个输入参数或当参数是包含相关参数的文件名时。
我下面的代码工作除了一个问题,它忽略了文件的最后一行。所以,如果文件如下。
文件.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