我在shell脚本中看到以下行。
CATALINA_BASE=${CATALINA_BASE:-${APP_HOME}/tomcat}
:-
是否像if
声明一样?也就是说,如果环境变量$CATALINA_BASE
存在,请将其值用于变量CATALINA_BASE
?
我也看到这一行:
APP_USER=${APP_USER:?}
?
是什么意思?在这种情况下,没有-
。
答案 0 :(得分:3)
${foo:-bar}
和${foo:bar}
都是默认参数扩展。它们在扩展显式设置的空字符串方面有所不同(与null,未设置的字符串相反)。
有关这些内容的详细说明,请参阅http://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html,http://mywiki.wooledge.org/BashFAQ/073或http://mywiki.wooledge.org/BashSheet#Parameter_Operations。