如何将包含引号的命令的输出作为awk变量传递?

时间:2018-02-06 20:31:07

标签: bash shell awk

想要使用awk设置日期变量,但无法获得引用或语法正确!

awk -v c=$i -v d="date +\"%D %r %Z\"" '{print d c }'

1 个答案:

答案 0 :(得分:5)

改为考虑:

awk -v d="$(date +'%D %r %Z')" 'BEGIN{print d}'

这里的变化是:

  1. 使用$()执行日期并获取变量d的输出。
  2. 使用date格式的单引号,因此您不会在双引号中使用双引号
  3. 使用BEGIN在awk中执行print语句。如果您要将文件或stdin提供给awk以便它读取记录,则这不是必需的。