awk在shell变量中传递麻烦

时间:2015-04-19 02:13:13

标签: shell awk

此问题已在此处提出;但是我按照示例操作,我的脚本仍然无效。我从shell脚本传递文件名到awk。问题是,var未扩展到文件名中。

这是一行:

plot=`awk -v var="$state_file" FNR==1{print} var`

awk只是抱怨它无法打开文件var

1 个答案:

答案 0 :(得分:0)

您的示例不会在脚本部分周围加上引号,这是shell将其作为单个参数传递给awk所必需的。它应该是这样的:

plot=$(awk -v var="$state_file" 'FNR==1{print} var')

(例如,使用单引号)。由于缺少引号,awk将其视为两个参数(根据其manual page,第二个被假定为文件):

FNR==1{print}
var

根据OP的评论,也许$state_file是应该由awk处理的文件的名称。通常情况会是这样的:

plot=$(awk 'FNR==1{print}' < "$state_file")

plot=$(awk 'FNR==1{print}' "$state_file")