推送到后台时脚本不写入文件

时间:2019-07-18 15:02:13

标签: bash

我正在设置一个路由器,该路由器应通过TCP接收字符串,然后根据这些字符串的内容执行脚本。 (例如设置电话号码,发送短信等)

下面的代码(script.sh)在通过以下方式执行时按预期工作:

./script.sh

但是我希望能够通过以下方式在后台(例如,启动时)执行它:

./script.sh &

script.sh的内容是:

#!/bin/sh
while true
do
 nc -l -p 30 > /home/sms/lastTCP
 cat /home/sms/lastTCP # debug only
 echo "$(date) : $(cat /home/sms/lastTCP)" >> /home/sms/logs

 NUMBER_STR=$(grep SET_NUMBER < /home/sms/lastTCP)
 TXT_STR=$(grep SEND_TXT < /home/sms/lastTCP)

 if [ "$NUMBER_STR" != "" ]; then
  echo "Received a number"
  # Extract phone number 
 fi

 if [ "$TXT_STR" != "" ]; then
  echo "Received a text"
  #Extract text and send to number
 fi
done

问题是当推送到后台时,没有任何内容写入/ home / sms / lastTCP。我发现问题来自:

nc -l -p 30 > /home/sms/lastTCP

因为/ home / sms / logs仅包含日期。 我做错了什么?

编辑: 多亏了查尔斯·达菲,这项工作有效:

nc -l -p 30 > /home/sms/lastTCP < /dev/null

0 个答案:

没有答案