我正在调试SOME_VAR=$(env)
if [ ! -z ${SOME_VAR+x} ]; then
echo "SOMETHING HAPPENED "
fi
脚本。这些代码行的行为是什么?
+x
bash
在这种情况下的含义是什么?事实证明,代码适用于sh
,但没有使用$ curl -sL https://raw.githubusercontent.com/eclipse/che/master/che.sh > /usr/local/bin/che
$ chmod +x /usr/local/bin/che
。
编辑:我正在使用Eclipse Che本地实例的部署,就像它解释here一样。
我安装了Eclipse Che CLI,它是一个.sh脚本:
bash
要使其正常运行,我需要使用$ bash che start
:
$ sh -x che start
如果我调试脚本......
get_list_of_che_system_environment_variables() {
[...]
if [ ! -z ${CHE_VARIABLES+x} ]; then
env | grep CHE_ >> $DOCKER_ENV
RETURN=$DOCKER_ENV
fi
脚本在这里失败:
{{1}}
有些东西不起作用。如果你说替换也应该在.sh中工作,那会是什么问题?
答案 0 :(得分:2)
$(".menu").click(function( event ) {
event.preventDefault();
if ( !$( this ).hasClass("isDown") ) {
$(".menu-container").css("display", "block");
$(".menu-container")
.animate({ "height": "5%" }, 200 )
.animate({ "height": "2%" }, 200 )
.animate({ "height": "8%" }, 200 )
.animate({ "height": "100%" }, 1000 );
} else {
$(".menu-container")
.animate({ "height": "50%" }, 600 )
.animate({ "height": "65%" }, 200 )
.animate({ "height": "40%" }, 200 )
.animate({ "height": "0%" }, 400, function() {
$( this ).css("display", "none");
});
}
// use this class as indecator if menu open or not
$( this ).toggleClass("isDown");
return false;
});
,则 ${SOME_VAR+x}
会扩展为空字符串。如果已设置(甚至是空字符串),则会扩展为SOME_VAR
。
由于在前一行设置了x
,因此总是扩展为SOME_VAR
。这使得x
语句无关紧要,因为代码将始终输出if
。
答案 1 :(得分:1)
这是一种参数替换形式,如果设置了SOME_VAR
,将产生angles = [0, 18, 36, 54, 72, 90]
colors = ['r','g','b','c']
x = [....]
y = [....]
,如果不是,则产生空字符串。
您可以详细了解不同类型的参数替换here。