我已經嘗試了這幾種方法,但試圖將一個變量傳遞給此代碼時,它是一個文本文件不起作用。奇怪的是,如果支票看到它只是一個網址,它完美的作品。不能將變量傳入while循環
我試過在wget的-i,報價約爲$線,{}左右線,把$目錄的幾種方式進入的wget。沒有。它將其讀取爲空白或作爲文件名稱,而不是文件中的URL。
在這混亂的頂部,在循環的第一部分$ savefile.log總是返回directory.txt.log。嘗試$ line.log來解決這個問題和nada。我確實需要將它剝離爲:和\在文件名中無效。
#!/bin/bash
read -p "Enter directory or .txt file: `echo $'\n> '`" directory
savefile=$(echo "${directory//"http://"}" | cut -d '/' -f1)
if [[ $directory == *.txt ]]
echo
echo "Spidering $directory"
while IFS='' read -r line || [[ -n "$line" ]]; do
echo "$line"
wget -np --spider -e robots=off --no-check-certificate $line 2>> $savefile.log
echo
echo "Spider saved to $savefile.log"
done < $directory
else
echo
echo "Spidering $directory"
wget -r -np --spider -e robots=off --no-check-certificate $directory 2>> $savefile.log
echo
echo "Spider saved to $savefile.log"
fi
請看看:http://www.shellcheck.net/ – Cyrus
命令替換是沒有必要的; '$'...「不限於轉義序列。 'read -p $'輸入目錄或.txt文件:\ n>'目錄'。 – chepner
確保您的數據文件是正確的文本文件(帶有終止換行符),並且不需要「||」。 [[-n「$ line」]]'使腳本正常工作。 – chepner