基本上,我有一个针对网页运行的python脚本,如果找到,它将输出电话号码联系人。
我要编写的代码是bash脚本,可以自动在网址列表中使用它。哪个将结果保存到文件中,这样我就可以查看哪些网址产生了电话号码联系人,而哪些网址没有。我想在同一个txt文件中将每个url结果放在不同的行中,以便我可以推断出哪个url产生了哪个结果。 EG
$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的每一行添加一个字符串,但是没有运气。 如果我能做到这一点,我将不需要错误,因为我可以推断出哪些网址无效,因为每行上只有一个字符串,不会产生结果。
那么,如果我将字符串设置为“ none”? 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
我做错了吗? /用错误的方式解决问题? 我花了数天时间试图解决这个问题,我为此而失去了睡眠!我对编码非常陌生,如果对此已经涉及,请对不起。我搜索了很多论坛,但找不到解决方法。
答案 0 :(得分:1)
您的脚本显然将错误输出到stderr,而不是stdout,因此您需要添加2>&1
以将stderr重定向到与stdout相同的文件。试试这个:
for each1 in "${scr1arr1[@]}"
do
"$each1"
done > log.txt 2>&1