我正在调试一个sh
脚本。这些代码行的行为是什么?
SOME_VAR=$(env)
if [ ! -z ${SOME_VAR+x} ]; then
echo "SOMETHING HAPPENED "
fi
+x
在这种情况下是什么意思?事实证明,代码可以正常工作bash
,但不能正常工作sh
。
编辑:我正在部署一个 Eclipse Che 本地实例,就像这里解释的那样。
我安装了 .sh 脚本的 Eclipse Che CLI:
$ curl -sL https://raw.githubusercontent.com/eclipse/che/master/che.sh > /usr/local/bin/che
$ chmod +x /usr/local/bin/che
为了使其工作,我需要使用以下命令运行它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
有些东西不工作。如果您说替换也应该在 .sh 中起作用,那会是什么问题?