我想声明几个非环境变量然后直接打印它们。
例如:
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