2017-11-04 2 views
2

Ich versuche, aws erstellen Lambda-Funktion ausführen. Es geht wie folgt -Bash-Skript fehlgeschlagen mit unbekannter Option aufgrund von Leerzeichen im Argument

eval $(aws lambda create-function \ 
--function-name $FUNCTION_NAME \ 
--runtime $RUNTIME \ 
--role $ROLE \ 
--handler $HANDLER \ 
--region $REGION \ 
--zip-file $ZIP_FILE \ 
--profile $PROFILE \ 
--environment $env_variables) 

Alle Variablen stammen von der Befehlszeile. Es schlägt für env_variables fehl. Dies wird als konstruiert -

env_variables="Variables={INPUT=${DAYS}}" 

wo DAYS ist eigentlich "20 days"

Wie kann ich diesen Raum vermeiden und meinen Befehl erfolgreich übergeben.

Antwort

0

Schließlich arbeitete folgenden -

env_variables="\"Variables\":{\"INPUT\":\"${DAYS}\"}" 

lambda_create_command="aws lambda create-function --function-name $FUNCTION_NAME --runtime $RUNTIME --role $ROLE --handler $HANDLER --region $REGION --zip-file $ZIP_FILE --profile $PROFILE --environment '$env_variables'" 

echo "Executing command : $lambda_create_command" 

eval $lambda_create_command 

Wichtige Punkte -

  1. Zitate in env_variables
  2. Verwenden von eval
  3. Einzel Zitat im Kommando-String d.h $env_variables

Referenz - https://gist.github.com/andywirv/f312d561c9702522f6d4ede1fe2750bd

Komplette Arbeitscode: https://gist.github.com/aniket91/19492b32f570ece202718153661b1823

2

Der Wert in Anführungszeichen gesetzt werden muss, versuchen Sie dies:

env_variables="Variables=\"{INPUT=${DAYS}}\"" 
+0

nicht hilft. Mit demselben Problem konfrontiert. Ich habe auch versucht INPUT = "\" 20 Tage \ "". –

Verwandte Themen