如果变量名称在字符串中,如何在awk中访问变量?

时间:2019-08-11 16:09:39

标签: bash awk

我在bash RED_FONT='tput setaf 1'中有一个变量,并且在awk命令str="RED_FONT"中有一个字符串。我想在awk中访问RED_FONT变量。 目前,我正在将awk -v RED_FONT=$(echo $RED_FONT)

的bash变量传递给awk

1 个答案:

答案 0 :(得分:3)

如果您将export的shell变量添加到环境中,则awk可以按名称查找它。

因此:

#!/usr/bin/env bash

set -a ## automatically export variables upon definition
fg_RED=$(tput setaf 1)
fg_WHITE=$(tput setaf white)
set +a ## turn off auto-export

awk '{ print(ENVIRON[$1]); print $2; print(ENVIRON[$3]) }' <<EOF
fg_RED print_me_in_red fg_WHITE
EOF

既没有export也没有在awk的命令行上传递的shell变量(与awk -v varname="$value"一样)完全无法被awk访问。