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

Ton*_*ony -2 bash shell awk

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

awk -v c=$i -v d="date +\"%D %r %Z\"" '{print d c }'
Run Code Online (Sandbox Code Playgroud)

JNe*_*ill 5

请考虑一下:

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

这里的变化是:

  1. 使用$()执行日期和得到的输出回变量d.
  2. 使用单引号作为date格式,因此双引号中没有双引号
  3. 使用BEGIN执行print中的awk语句.如果您要将文件或stdin提供给awk以便它读取记录,则不需要这样做.