我只是事先道歉;这是我的第一篇文章,所以如果我不够具体,如果问题已经得到回答并且我看起来不够努力,以及如果我使用了某种不正确的格式,我很抱歉。
也就是说,这是我的问题:在 bash 中,我正在尝试创建一个脚本,该脚本将读取一个列出几十个 URL 的文件。一旦它读取了每一行,我需要它对其运行一组操作,首先是使用 lynx 导航到网站。但是,在实践中,它会在第一行完美运行一次。Lynx 进行,下载工作,然后该文件的后续重命名和组织也进行。但随后它会跳过所有其他行并表现得好像它已经完成了整个文件。
我已经通过消除代码的所有其他部分,然后仅消除 lynx 来测试是否是 lynx 导致了问题。它可以在没有 Lynx 的情况下工作,但是,当然,我需要 lynx 才能使其余的输出对我有用。让我发布代码:
!#/bin/bash
while read line; do
echo $line
lynx -accept_all_cookies $line
echo "lynx done"
od -N 2 -h *.zip | grep "4b50"
echo "od done, if 1 starting..."
if [[ $? -eq 0 ]]
then ls *.*>>logs/zips.log
else
od -N 2 -h *.exe | grep "5a4d"
echo "if 2 starting..."
if [[ $? -eq 0 ]]
then ls *.*>>logs/exes.log
else
od -N 2 -h *.exe | grep "5a4d, 4b50"
echo "if 3 starting..."
if [[ $? -eq 1 ]]
then
ls *.*>>logs/failed.log
fi
echo "if 3 done"
fi
echo "if 2 done"
fi
echo "if 1 done..."
FILE=`(ls -tr *.* | head -1)`
NOW=$(date +"%m_%d_%Y")
echo "vars set"
mv $FILE "criticalfreepri/${FILE%%.*}(ZCH,$NOW).${FILE#*.}" -u
echo "file moved"
rm *.zip *.exe
echo "file removed"
done < "lynx"
$SHELL
可以肯定的是,我确实有一个名为“lynx”的文件,其中包含由每个返回分隔的 url。此外,我使用所有这些“回声”来进行自己的调试,但我已经尝试过使用和不使用回声。当我执行脚本时,回声全部显示...
任何帮助表示赞赏,非常感谢大家!希望我没有在这篇文章中违反任何规则!
PS:我在 Linux Mint 上通过“终端”程序运行东西。如果有任何相关信息,我正在 Gedit 中使用 bash 编写脚本。谢谢!
编辑:实际上,回声测试对所有三行重复。所以看起来 lynx 根本无法在同一个循环中重新开始?
根据要求,这是脚本的简化版本:
!#/bin/bash
while read -r line; do
echo $line
lynx $line
echo "lynx done"
done < "ref/url"
read "lynx"
$SHELL
请注意,我已经更改了“url”文件所在的站点:
`www.google.com
www.majorgeeks.com
http://www.sophos.com/en-us/products/free-tools/virus-removal-tool.aspx `