在bash脚本中执行的Python脚本。错误未输出到日志文件

时间:2019-06-02 11:39:18

标签: arrays python-3.x bash output

基本上,我有一个针对网页运行的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

我做错了吗? /用错误的方式解决问题? 我花了数天时间试图解决这个问题,我为此而失去了睡眠!我对编码非常陌生,如果对此已经涉及,请对不起。我搜索了很多论坛,但找不到解决方法。

1 个答案:

答案 0 :(得分:1)

您的脚本显然将错误输出到stderr,而不是stdout,因此您需要添加2>&1以将stderr重定向到与stdout相同的文件。试试这个:

 for each1 in "${scr1arr1[@]}"
 do
    "$each1"
 done > log.txt 2>&1
相关问题