【发布时间】:2011-05-27 20:25:51
【问题描述】:
我有一个脚本,它每天一次用一些统计信息更新服务器。从命令行运行时,该脚本按预期工作,但从 cron 运行时,某些变量不会传递给 curl。
下面是代码示例:
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
/bin/sh /etc/profile
MACADDR=$(ifconfig en0 | grep ether | awk '{print $2}')
DISKUSED=$(df / | awk '{print $3}' | tail -n1)
DISKSIZE=$(df / | awk '{print $2}' | tail -n1)
# HTTP GET PARAMS
GET_DELIM="&"
GET_MAC="macaddr"
GET_DS="disk_size"
GET_DU="disk_used"
# Put together the query
QUERY1=$GET_MAC=$MACADDR$GET_DELIM$GET_DS=$DISKSIZE$GET_DELIM$GET_DU=$DISK_USED
curl http://192.168.100.150/status.php?$QUERY1
cron作业中的结果是http://192.168.100.150/status.php?macaddr=&disk_size=&disk_used=
我不确定变量是否有问题,或者可能是 awk 试图解析未指定终端大小的数据等。
感谢任何帮助。
【问题讨论】:
-
UPWGFBA -- grep 后跟 awk 的无用管道 :-) 更好:
MACADDR=$(ifconfig en0 | awk '/ether/ {print $2}')