【问题标题】:variable declaration in awk commandawk 命令中的变量声明
【发布时间】:2013-01-13 23:40:15
【问题描述】:

我在awk 命令中遇到了问题。实际上我使用了一个变量DELETION_COMMAND,该变量的值是rm -rf。之后我试图执行下面的行然后它给出了一个错误。而如果我使用rm 作为相同变量DELETION_COMMAND 的值。那么它工作正常。

awk '{print "'${DELETION_COMMAND}'"" ""'${COMPLETE_PATH}'""/"$1"/*"}' ${DB_FEED_FILE} > ${TEMP_FEED_FILE}

错误:

awk: {print "rm
awk:        ^ unterminated string

请提出建议。
我哪里错了?

【问题讨论】:

  • 有点离题,但一定要在“DELETION_COMMAND”(或作为 DELETION_COMMAND 变量的一部分)和表示最后一个标志的路径之间放置一个 -- 参数,否则您可能会尝试删除 '/my/path/ ; rm -rf'(注意符号和空格在路径中是完全有效的字符)

标签: awk


【解决方案1】:

突出显示已经表明您的错误。您将 awk 表达式放在单引号之间,然后在表达式中使用单引号。 awk 认为你的表达是这样的:

awk '{print "'

要解决此问题,请使用反斜杠转义单引号。

【讨论】:

  • 谢谢 Sjoerd...但我没明白你的意思..你能写下语法吗
【解决方案2】:

使用-v 标志将shell vars 传递给awk,不要忘记引用:

awk -v com="${DELETION_COMMAND}" -v path="${COMPLETE_PATH}" '{ print com, path, "/", $1, "/" }' "${DB_FEED_FILE}" > "${TEMP_FEED_FILE}"

【讨论】:

  • 谢谢史蒂夫...但同样的命令正在运行“rm”值。那么“rm -rf”值有什么问题。
  • @sumitvedi:问题是你的变量没有被引用:在你的例子中,你需要:awk '{print '"${DELETION_COMMAND}"' ...。 HTH。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
  • 2013-05-06
  • 2021-09-08
  • 2020-03-28
  • 2012-12-12
相关资源
最近更新 更多