声明非环境变量,然后直接打印

声明非环境变量,然后直接打印

我想声明几个非环境变量然后直接打印它们。

例如:

read domain &&
web_application_root="${HOME}/www" &&
domain_dir="${web_application_root}/${domain}/public_html" &&

第三个命令之后应该使用什么命令来&&打印最后三个变量声明的输出?

打印输出的目的是在一个地方整齐地显示三个命令的输出,顺序地,也许以类似表格的方式,方便阅读(比说set -x痕迹舒服得多)。

答案1

您可以定义一个函数来完成它。这里我使用的是 bash 函数,如果你使用不同的 shell,你可能需要调整它:

printVariables() {
    local maxLen=0

    # Figure out the length of the longest variable name
    for i; do
        if ((${#i} > maxLen)); then
            maxLen=${#i}
        fi
    done

    # Make room for the colon
    maxLen=$((maxLen + 1))

    # Print the named variables
    for i; do
        printf "%-${maxLen}s %s\n" "${i}:" "${!i}"
    done
}

然后:

$ read domain &&
web_application_root="${HOME}/www" &&
domain_dir="${web_application_root}/${domain}/public_html" &&
printVariables domain web_application_root domain_dir
example.com

将产生以下输出:

domain:               example.com
web_application_root: /home/user/www
domain_dir:           /home/user/www/example.com/public_html

相关内容