1

我在 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

我已经四处搜索,找不到任何绕过它的方法,任何帮助将不胜感激。

4

1 回答 1

1

重定向输出流可能就足够了(/dev/null如果需要保留它,则重定向到文件)

bash ~/webSupport.sh pullVars "$b" >/dev/null 2>&1 &

或关闭它们:

bash ~/webSupport.sh pullVars "$b" >&- 2>&- &
于 2013-07-11T01:33:12.270 回答