awk显示变量,包含environmet内容

时间:2017-12-27 16:10:38

标签: variables awk string-substitution

我从系统中获取一个返回字符串的变量,例如:

$VARIABLE/dir/text.file

我尝试使用gsub,但我遗漏了一些东西:

onstat -c | grep ^MSGPATH | awk 'gsub (/$INFORMIXDIR/, ${INFORMIXDIR}) {print $2}'

它返回错误:

awk: cmd. line:1: gsub (/$INFORMIXDIR/, ${INFORMIXDIR}) {print $2}
awk: cmd. line:1:                        ^ syntax error
awk: cmd. line:1: gsub (/$INFORMIXDIR/, ${INFORMIXDIR}) {print $2}
awk: cmd. line:1:                                     ^ 0 is invalid as number of arguments for gsub

可能是什么问题?

1 个答案:

答案 0 :(得分:2)

因为awk正文是单引号,所以无法展开shell变量。安全地执行此操作的方法是使用-v选项将值传递给awk:

... | awk -v dir="$INFORMIXDIR" 'gsub (/\$INFORMIXDIR/, dir) {print $2}'

请注意,您必须转义正则表达式中的$,因为它是一个特殊的正则表达式字符(意为“字符串结尾”)