首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用awk为变量赋值不适用于cron

使用awk为变量赋值不适用于cron
EN

Stack Overflow用户
提问于 2012-04-11 20:29:30
回答 2查看 1.5K关注 0票数 0

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

有问题的代码是这样的:

代码语言:javascript
复制
sens=`awk -F, '{ if($2 == '${num}' && $4 == '$tipogalis' && $9 == "0")print $1 }' /usr/xbow/xserve/galtel/relasens`

我不想用细节来打扰您;这是while循环的主行,它必须读取文件中列的值。它从命令行运行得很好,但是作为cron作业运行时没有为变量"sens“赋值。

我已经检查了行中的所有变量都是read OK (num,tipogalis等),所以我非常确定这个问题与"&&“的数量或"print”函数有关。

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

代码语言:javascript
复制
LANG=en_US.UTF-8
export LANG

但没有什么不同。

还有其他的建议吗?我知道这个问题一定很小。魔鬼总是在细节中。

EN

回答 2

Stack Overflow用户

发布于 2012-04-11 21:22:18

我假设您已经验证了在num中运行cron时,cron和tipogalis变量保存了正确的值。

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

代码语言:javascript
复制
sens=`awk -F, '{ if($2 == "'${num}'" && $4 == "'$tipogalis'" && $9 == "0")print $1 }' /usr/xbow/xserve/galtel/relasens`

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

代码语言:javascript
复制
sens=$(awk -F, -v val2="$num" -v val4="$tipogalis" '$2 == val2 && $4 == val4 && $9 == "0" {print $1}' /usr/xbow/xserve/galtel/relasens)
票数 0
EN

Stack Overflow用户

发布于 2012-04-12 19:40:41

最后,正确的方法是:

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

但问题不在于产品线。由于一个内部问题,我的电话被打到了一个永远不会等于'0‘的$9。

对不起。这篇文章甚至可以完全删除,以避免让其他用户感到困惑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10105919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档