前もってお詫び申し上げます。これは私の初めての投稿なので、十分に具体的でない場合、質問が既に回答されていて十分に調べていない場合、および何らかの不適切な書式を使用している場合は申し訳ありません.
とはいえ、ここに私の問題があります.bashで、数十のURLをリストするファイルを読み取るスクリプトを作成しようとしています。各行を読み取ったら、一連のアクションを実行する必要があります。最初のアクションは、lynx を使用して Web サイトに移動することです。ただし、実際には、最初の行で一度完全に実行されます。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 を使用してスクリプトを作成しています。ありがとう!
編集: 実際には、エコー テストは 3 行すべてに対して繰り返されます。では、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 `