我在bash脚本中使用netcat作为伪服务器,以便从输入的输入中运行其他bash脚本。这是一个令人愉快的侧面项目,但我似乎陷入困境。
本质上,脚本和代码运行完美,但直到服务器完成进程后才会显示输出;因为这可能是一个40小时的过程,所以不希望客户端有一个加载屏幕而且整个时间都没有提示。
简单地说,我想将基于内容的页面加载到一个点,忽略后面所有内容的输出。我到目前为止的代码如下:
#!/bin/bash
while [ $? -eq 0 ]; do
nc -vlp 8080 -c'(
r=read
$r a b c
z=$r
while [ ${#z} -gt 2]; do
$r z
done
f=`echo $b|sed "s/[^a-z0-9_.-]//gi"`
o="HTTP/1.0 200 OK\r\n"
c="Content"
if [ -z "$f" ]; then
f="index.html"
echo "$o$c-Type: `file -ib $f`\n$c-Length: `stat -c%s $f`"
echo
cat $f
elif [ "$f"==Encrypt ]; then
echo $o
echo
echo $(bash ~/webSupport.sh currentEncrypt "$b")
bash ~/webSupport.sh pullVars "$b" &
else
echo -e "HTTP/1.0 404 Not Found\n\n404\n"
fi
)'
done
我已经四处寻找,并且找不到任何方法可以绕过它,任何帮助都会受到赞赏。
答案 0 :(得分:1)
如果您需要保留输出流,可能应该足够重定向输出流(/dev/null
或文件)
bash ~/webSupport.sh pullVars "$b" >/dev/null 2>&1 &
或关闭它们:
bash ~/webSupport.sh pullVars "$b" >&- 2>&- &