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