awk - “=”处的 awk 语法错误,因为变量名在字符串中?
问题描述
awk
如果我将变量定义为字符串,并且该变量名在字符串中,则会引发错误。为什么?
最小的可重现示例:
echo "stuff" | \
awk '{
dir = "/somewhere"
log = dir "/log.gz"
}' FS="\t" OFS="\t"
给出错误:
awk: cmd. line:3: log = dir "/log.gz"
awk: cmd. line:3: ^ syntax error
但是,如果我将变量重命名log
为mlog
,如下所示:
echo "stuff" | \
awk '{
dir = "/somewhere"
mlog = dir "/log.gz"
}' FS="\t" OFS="\t"
然后没有错误,它成功退出。
这里发生了什么?
$ awk --version
GNU Awk 5.0.1, API: 2.0 (GNU MPFR 4.0.2, GNU MP 6.2.0)
解决方案
您log
在程序中用作变量名,这是不允许的(它是awk
编程中的保留关键字)。当我们看到man awk
我们得到这个:
log(expr) 自然对数函数。
尝试在此处更改您的变量名称。
例如:当我将其名称更改为 l_log 时,它现在没有显示任何错误。我保留了它的名称,因为l_log
您可以根据您的要求保留它。
echo "stuff" |
awk '{
dir="/somewhere"
l_log=dir "/log.gz"
}' FS="\t" OFS="\t"
推荐阅读
- swift - 快速打开/关闭开关时显示/隐藏 TableViewCell 行
- javascript - 赛普拉斯解析 XML 响应
- python - SimPy - 模拟时钟
- android-studio - Android Studio 根据对象属性从数组列表中获取对象
- django - Django:如何将我的查询从我的 for 循环中取出
- ios - UIVisualEffectView 的子视图未在 XCUIApplication().debugDescription 中显示
- javascript - 使用 jquery 在编辑模式下显示多选值
- python - Pygame 按钮对点击没有反应
- date - 将日历上的日期与另一个字段匹配
- firebase - 如何通过颤动的火力使firestore持久化到缓存文档