0

从 cron 运行脚本时遇到问题。首先,我发现访问 SQLite 有困难;现在让我抓狂的是 AWK 命令。

有问题的行是这样的:

sens=`awk -F, '{ if($2 == '${num}' && $4 == '$tipogalis' && $9 == "0")print $1 }' /usr/xbow/xserve/galtel/relasens`

不想用细节来打扰你;它是 while 循环的主线,必须读取文件中列的值。它可以从命令行完美运行,但作为 cron 作业运行不会给变量“sens”带来任何价值。

我已经检查了该行内的所有变量都读取正常(num、tipogalis 等),所以我很确定问题与“&&”的数量或“打印”函数有关。

万一有人想对环境变量提出一些建议,我已经在脚本的开头添加了以下几行:

LANG=en_US.UTF-8
export LANG

但没什么区别。

请问还有什么建议吗?我知道问题一定很小。魔鬼总是在细节中...

4

2 回答 2

0

最后正确的方法是这个:

感觉=awk -F, '{ if($2 == '${num}' && $4 == '$tipogalis' && $9 == '0')print $1 }' /usr/xbow/xserve/galtel/relasens

但问题不在于线路。由于内部问题,我拨打了一个从来不等于“0”的 9 美元电话。

对不起。这篇文章甚至可以完全删除以避免混淆其他用户。

于 2012-04-12T11:40:41.413 回答
0

我假设您在 cron 中运行时验证了numtipogalis变量的值是否正确。

我猜您在 awk if 语句中缺少围绕常量的引号。

sens=`awk -F, '{ if($2 == "'${num}'" && $4 == "'$tipogalis'" && $9 == "0")print $1 }' /usr/xbow/xserve/galtel/relasens`

我会使用该-v选项将值传递给 awk 而不是将引用拼凑在一起。

sens=$(awk -F, -v val2="$num" -v val4="$tipogalis" '$2 == val2 && $4 == val4 && $9 == "0" {print $1}' /usr/xbow/xserve/galtel/relasens)
于 2012-04-11T13:22:17.830 回答