【发布时间】:2019-10-18 06:12:28
【问题描述】:
基本上我有一个针对网页运行的 python 脚本,如果找到,它会输出一个电话号码联系人。
我要编写的是一个 bash 脚本,它可以在 url 列表中自动使用它。它将结果保存到文件中,这样我就可以看到哪些 url 产生了电话号码联系人,哪些 url 没有。我希望它在同一个 txt 文件中,每个 url 结果在不同的行上,以便我可以推断出哪些 url 产生了哪些结果。 例如
$cat log.txt
HTTPError: 404
224 265 899
HTTPError: 404
847 718 9300, + 1, 662 538 6500
问题是当我运行我的 bash 脚本时,http 错误会打印到屏幕上,而电话号码会打印到日志文件中。 这意味着我无法推断出哪些网址产生了哪些结果。
所以目前我的 bash 脚本将一个 URLS.txt 文件读入一个数组。 然后将脚本命令添加到数组中每个 url 的开头。 然后使用 for 循环,执行每个命令..
我试图寻找一种在每次执行 python 命令时向 log.txt 的每一行添加一个字符串但没有运气的方法。 如果我能做到这一点,我就不需要错误,因为我可以推断出哪些 url 不起作用,因为每一行上都会有没有产生结果的字符串。
如果我将字符串设置为“无”? log.txt 看起来像这样
none?
none? 224 265 899
none?
none? 847 718 9300, + 1, 662 538 6500
这是我将 URL 放入数组后的代码。
scr1="python3 extract.py "
scr1arr1=( "${array1[@]/#/$scr1}" )
for each1 in "${scr1arr1[@]}"
do
$each1 >> log.txt
done
这就是我执行脚本时屏幕上发生的情况。
HTTPError: 404
HTTPError: 404
log.txt 看起来像这样
224 265 8990,
847 718 9300, + 1, 662 538 6500
我做错了吗? / 以错误的方式解决问题?? 我确实花了几天时间试图解决这个问题,我正在为此失眠!我对编码很陌生,很抱歉,如果这已经涵盖了。我搜索了很多论坛,但都没有找到解决方案。
【问题讨论】:
-
为什么不在 Python 本身中完成所有要求?
-
python 会更好吗?我不知道python和bash,在bash中肯定不行吗?
-
请看BashFAQ/050。
-
Python 会更好,因为在 Python 内部,您可以轻松检查是否有错误,并且只有在没有错误时才写入文件。通过将 Python 脚本包装到 bash 循环中,您必须为 bash 中的每个调用解析 Python 脚本的输出。当需要更改时,该设置更难维护。
-
@DennisWilliamson 在阅读 BashFAQ/050 之后,我现在知道我必须使用函数来保存命令。但是,我对在这种情况下是否需要包含“eval”感到困惑。我也对为什么下面的代码不起作用感到困惑。我在每个数组元素的开头添加函数的方式不正确吗?
标签: arrays python-3.x bash output