变量在SH脚本中保持为空

  • 本文关键字:SH 脚本 变量 shell sh
  • 更新时间 :
  • 英文 :


使用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

相反。

相关内容

  • 没有找到相关文章

最新更新