我在調試sh
腳本。這些代碼行是什麼?
SOME_VAR=$(env)
if [ ! -z ${SOME_VAR+x} ]; then
echo "SOMETHING HAPPENED "
fi
+x
在這種情況下的含義是什麼?事實證明,代碼適用於bash
,但沒有與sh
。
編輯:我正在部署一個Eclipse Che本地實例,就像它被解釋爲here一樣。
我安裝了Eclipse車CLI是一個.SH腳本:
$ 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中工作,那麼問題是什麼?
代碼應該在任何POSIX兼容的shell中以相同的方式工作。 – chepner
什麼意思是代碼不能用'sh'工作?所有的命令都在'sh'中有效。 – 2016-08-25 01:17:36
@redmm我編輯了我的問題,告訴你可能是什麼問題 – JonDoe297