1

Wenn ich einen Wert eingeben, der ein Dollarzeichen $ hat, liest die Umgebung nur den ersten Teil davon, und das ist, weil die env-Datei doppelte Anführungszeichen in den Werten anstelle von einfachen Anführungszeichen setzt. Irgendwo in der Nähe? Der Wert kann nicht geändert werden, da es sich um ein Zugriffstoken von einem Dienst handelt, den ich nicht kontrolliere.

Beispiel:

Die env-Datei erzeugt wird, wie: export MY_VAR="my$value"

Rennen, dass die Ergebnisse in: MY_VAR=my

Antwort

1

Es ist $value als Variable zu bewerten und es auf einen leeren String, da die Umwandlung Variable existiert nicht in der Umgebung. Versuchen Sie, die $ Charakter wie folgt zu entkommen:

export MY_VAR="my\$value"

Alternativ verwenden Sie einfache Anführungszeichen, die variable Erweiterung verhindern sollte:

export MY_VAR='my$value'

+0

Ich versuchte zu entkommen, aber das endet als '' 'meine \\' 'in der Umgebung, und ich kann die Anführungszeichen nicht kontrollieren Für die Werte wird das von Beanstalk übernommen. Ich benutzte ein anderes Zeichen und ersetzte es im Code. Schwache Lösung aber funktioniert. –

+0

Einfache Anführungszeichen funktionierten gut für mich –

1

Es scheint, dass das Dollarzeichen und seine nachfolgenden Zeichen interpretiert werden (zB von bash) als Umgebungsvariable und durch ihren Wert ersetzt. Während die Umgebungsvariable $ value (offensichtlich) leer ist, wird sie einfach zu "my" und (leerer String) ausgewertet.

Es dauerte eine ganze Weile eine Abhilfe zu finden, aber diese (wenn auch ziemlich hässlich) funktioniert für mich: Einfach Ihre Zeichenfolge umgeben mit

$(echo '<your string here>') 

und stellen Sie sicher, dass alle Dollarzeichen mit 'entkommen sind \ 'Zeichen, z Verwenden Sie die folgende Zeichenfolge als ElasticBeanStalk Umwelt Eigenschaftswert

MY_VAR=$(echo 'my\$value') 

Als Ergebnis wird der Wert ‚my $ value‘ als MY_VAR an Ihre Anwendung übergeben werden.

0

Obwohl dies eine alte Frage ist, stoße ich heute auf das gleiche Problem. Obwohl @Pkauls Lösung funktioniert, ist es hässlich. Nach ein paar Experimenten habe ich herausgefunden, dass ich einfach drei Backslashes verwenden muss: