我正在设置一个路由器,该路由器应通过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