由于参数中的空格,Bash脚本因未知选项而失败

时间:2017-11-04 13:07:51

标签: linux bash amazon-web-services aws-lambda aws-cli

我正在尝试运行aws创建lambda函数。它如下 -

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"

如何避免此空间并成功传递命令。

2 个答案:

答案 0 :(得分:2)

值必须用引号括起来,试试这个:

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

答案 1 :(得分:0)

最后继续工作 -

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. 中的引文
  3. 使用eval
  4. 命令字符串中的单引号,即$env_variables
  5. 参考 - https://gist.github.com/andywirv/f312d561c9702522f6d4ede1fe2750bd

    完整的工作代码:https://gist.github.com/aniket91/19492b32f570ece202718153661b1823