0

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 でも機能するはずだと言う場合、何が問題になるのでしょうか?

4

2 に答える 2

1

xこれは、設定されている場合は生成されるパラメーター置換の形式であり、SOME_VAR設定されていない場合は null 文字列になります。

さまざまなタイプのパラメーター置換について詳しくは、こちらをご覧ください。

于 2016-08-25T00:02:03.317 に答える