【问题标题】:syntax error in awk 'if-else if-else' with multiple operations具有多个操作的 awk 'if-else if-else' 中的语法错误
【发布时间】:2023-03-13 09:04:02
【问题描述】:

awk 条件语句有个奇怪的地方:

当在每个条件之后运行 awk 'if-else if-else' 时,它可以正常工作,如下所示:

awk 'BEGIN {a=30; \
if (a==10) print "a = 10"; \
else if (a == 20) print "a = 20"; \
else print "a = 30"}'

输出: a = 30

但是,当运行 awk 'if-else if-else' 并在 'else if' 之后执行多个操作(适当地大括号)时,会出现语法错误:

awk 'BEGIN {a=30; \
if (a==10) print "a = 10"; \
else if (a == 20) {print "a = 20"; print "b = 20"}; \
else print "a = 30"}'

输出:

awk: cmd. line:4: else print "a = 30"}
awk: cmd. line:4: ^ syntax error

谁能判断这是一个 awk 问题,在这种情况下本质上不允许进行多次操作,还是只是我的语法错误可以纠正?

附:我查看了 awk 'if else' 语法错误的所有相关帖子,但没有一个解决这个问题。

【问题讨论】:

  • 它以awk 'BEGIN {a=30; \ if (a==10) print "a = 10"; \ else if (a == 20) {print "a = 20"; print "b = 20"} \ else print "a = 30"}' 工作。你是对的,它与多个操作无关!我什至没有意识到应该删除“else if”和“else”之间的分号......我只是删除了所有不必要的分号。
  • 在单引号字符串中不需要任何续行。
  • 删除大括号后第三行末尾的分号 (;)

标签: awk conditional-statements


【解决方案1】:

删除了右括号后第三行末尾的分号。

awk 'BEGIN {a=30; \
if (a==10) print "a = 10"; \
else if (a == 20) {print "a = 20"; print "b = 20"} \
else print "a = 30"}'

输出:a = 30

【讨论】:

    猜你喜欢
    • 2015-11-18
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    相关资源
    最近更新 更多