引数の空白が原因で、不明なオプションで Bash スクリプトが失敗します。

引数の空白が原因で、不明なオプションで Bash スクリプトが失敗します。

aws create ラムダ関数を実行しようとしています。起こったことは次のとおりです。

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)

すべての変数はコマンドラインから来ます。 env_variablesが失敗しました。これは次のように構成されています -

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

DAYSは実際に"20 days"

どうすればこのスペースを避け、コマンドを正常に渡すことができますか?

答え1

最後に、以下は正常に機能しました。

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

重要 –

  1. 引用された場所env_variables
  2. 使用eval
  3. コマンド文字列の一重引用符、つまり$env_variables

引用する -https://gist.github.com/andywirv/f312d561c9702522f6d4ede1fe2750bd

関連情報