我想声明一个名为variableToUse
的变量,它保存文件名路径。
我想在今天的日期附加文件名。
以下代码位于myAWK.awk
$bash: cat myAWK.awk
BEGIN{
today="date +%Y%m%d";
variableToUse=/MainDir/MainDir1/MainDir2/OutputFile_today.xml
}
/<record / { i=1 }
i { a[i++]=$0 }
/<\/record>/ {
if (found) {
print a[i] >> variableToUse
}
}
我在OutputFile_today.xml
收到语法错误。
如何使用变量值?
答案 0 :(得分:1)
示例强>
$ awk 'BEGIN{variableToUse="/MainDir/MainDir1/MainDir2/OutputFile_today.xml"; print variableToUse}'
/MainDir/MainDir1/MainDir2/OutputFile_today.xml
strftime
示例强>
$ awk 'BEGIN{today="date +%Y%m%d";variableToUse="/MainDir/MainDir1/MainDir2/OutputFile_"strftime("%Y%m%d")".xml"; print variableToUse}'
/MainDir/MainDir1/MainDir2/OutputFile_20160205.xml
答案 1 :(得分:1)
让你的awk脚本像这样:
BEGIN {
today="date +%Y%m%d";
variableToUse="/MainDir/MainDir1/MainDir2/OutputFile_" today ".xml"
}
/<record / { i=1 }
i { a[i++]=$0 }
/<\/record>/ {
if (found) {
print a[i] >> variableToUse
}
}
btw还有其他几个问题:
- 我没有看到found
在此脚本中的任何位置设置。
- today="date +%Y%m%d"
今天不会执行date command. It just assigns literal
日期+%Y%m%d to
variable. If you want to execute
日期`命令,然后使用:
awk -v today="$(date '+%Y%m%d')" -f myAWK.awk
并从today=
阻止中移除BEGIN
行。