使用curl到变量的横幅抓取似乎是空的。当我删除>dev/noll/dev/null 2>amp;1输出被写入屏幕,但我需要它在没有屏幕的var BANNER中,我做错了什么?
IPS="$(< scandata.dat)"
for IP in $IPS;
do
TRY1="$(curl -m 2 -s -o /dev/null --head -w "%{http_code}" -X POST "rtsp://$IP:554")"
if [ "$TRY1" -eq 200 ]
then
BANNER=$(curl -m 2 -v -s rtsp://$IP:554 > /dev/null 2>&1 ) #Error
echo $BANNER &>> FullBanners.txt
fi
if [[ "$BANNER" == *"TEXT"* ]]; then
echo $IP &>> TEXT.txt
fi
done
我不知道我做了什么,但正在更改
BANNER=$(curl -m 2 -v -s rtsp://$IP:554 > /dev/null 2>&1 )
至
BANNER="$(curl -m 2 -s -o /dev/null --head -w -X POST "rtsp://$IP:554")"
为我做了这项工作。这一定是一个丑陋的黑客,至少它工作(对我来说(
谢谢大家的帮助。
重定向
>/dev/null 2>&1
说:
首先,扔掉stdout。
然后,将stderr重定向到stdout现在所在的位置。由于第一次重定向导致stdout变为/dev/null,stderr也变为/dev/null。
因此,您的变量保持为空。
你应该做
2>&1 >/dev/null
相反。