![如何使用 select 从包含列表的 x 文件中进行选择,需要运行一组命令,在本例中为curl](https://linux22.com/image/158831/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20select%20%E4%BB%8E%E5%8C%85%E5%90%AB%E5%88%97%E8%A1%A8%E7%9A%84%20x%20%E6%96%87%E4%BB%B6%E4%B8%AD%E8%BF%9B%E8%A1%8C%E9%80%89%E6%8B%A9%EF%BC%8C%E9%9C%80%E8%A6%81%E8%BF%90%E8%A1%8C%E4%B8%80%E7%BB%84%E5%91%BD%E4%BB%A4%EF%BC%8C%E5%9C%A8%E6%9C%AC%E4%BE%8B%E4%B8%AD%E4%B8%BAcurl.png)
我有大约 100 个用于健康检查的 URL 列表(200, 300,400,500),但无法弄清楚提出问题的术语。在此先向您道歉。
我想使用一个列表来选择包含 URL 的已识别列表文件,然后对其运行curl 以获得结果。目前,我很困惑。
如果我隐式调用该文件,我就可以让事情开始工作。如果我对可供选择的文件列表使用 select,我可以获取该文件并对结果执行简单的“cat”操作,并成功获取其中的 URL。
我似乎无法进行选择,将文件放入其变量中,然后进入循环以成功运行所选文件中的这些项目。
我很尴尬,因为它把我的头发弄乱了。
作品
select f in *.lst; do echo $f
done
不以任何方式或格式工作
select f in *.lst;
for i in (cat $f); do curl $i
done
bash -x ./test.sh
+ select f in '*.lst'
1) availability_health_check.lst 3) facility_service_health_check.lst
2) explorer_health_check.lst 4) mobile_service_health_check.lst
#? 1
+ echo availability_health_check.lst
availability_health_check.lst
答案1
您的代码缺少声明中的do
and 。我相信你想要这样的东西:done
select
select f in *.lst; do
for i in $(cat $f); do
curl "$i"
done
done
这将允许您选择一个文件,然后在所选文件的每一行上运行curl。exit 0
如果希望脚本在选择文件后退出,请在 for 循环后添加一个。