我的程序,我尝试读取变量中文件的内容。
root@pi:/tmp> cat /bin/dnsupdate
#!/bin/sh
set -xv
ip="$(cat /tmp/ip)"
echo $ip
exit 0
当我在shell中运行程序时,它运行正常。
root@pi:/tmp> dnsupdate
ip="$(cat /tmp/ip)"
+/bin/dnsupdate:5> ip=+/bin/dnsupdate:5> cat /tmp/ip
+/bin/dnsupdate:5> ip=92.192.52.164
echo $ip
+/bin/dnsupdate:6> echo 92.192.52.164
92.192.52.164
exit 0
+/bin/dnsupdate:7> exit 0
现在添加一个cronjob并记录脚本输出。
root@pi:/tmp> crontab -l
#m h d m w cmd
* * * * * dnsupdate >>/tmp/dns 2>>/tmp/dns
root@pi:/tmp> cat dns
ip="$(cat /tmp/ip)"
+/bin/dnsupdate:5> ip=+/bin/dnsupdate:5> cat /tmp/ip
+/bin/dnsupdate:5> ip=''
echo $ip
+/bin/dnsupdate:6> echo
exit 0
+/bin/dnsupdate:7> exit 0
还尝试#!/bin/zsh
作为shebang,因为我的默认shell是zsh和类似ip=$(</tmp/ip)
的东西,但仍然没有运气。当脚本通过cron运行时,为什么变量中没有内容?