此问题已在此处提出;但是我按照示例操作,我的脚本仍然无效。我从shell脚本传递文件名到awk。问题是,var
未扩展到文件名中。
这是一行:
plot=`awk -v var="$state_file" FNR==1{print} var`
awk只是抱怨它无法打开文件var
。
答案 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")