【问题标题】:How do I access a variable in awk if the variable name is in a string? [closed]如果变量名在字符串中,如何访问 awk 中的变量? [关闭]
【发布时间】:2019-08-11 16:09:39
【问题描述】:

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

【问题讨论】:

标签: bash awk


【解决方案1】:

如果你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

一个既不是 exported 也不是在 awk 命令行上传递的 shell 变量(如 awk -v varname="$value")根本无法被 awk 访问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 2014-06-29
    • 2014-07-27
    相关资源
    最近更新 更多