将变量的值传递给bash脚本中的命令

时间:2017-08-26 16:27:59

标签: bash shell amazon-web-services amazon-s3

如何将变量的值传递给bash脚本中的命令?

具体来说,我想创建一个带有(部分)随机名称的AWS S3存储桶。这是我到目前为止所得到的:

#!/bin/bash
random_id=$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 8 | head -n 1)
bucket_name=s3://mybucket-$random_id
echo Bucket name: ${bucket_name}
aws s3 mb ${bucket_name}

我得到的输出:

Bucket name: s3://mybucket-z4nnli2k
 Parameter validation failed:cket-z4nnli2k
": Bucket name must match the regex "^[a-zA-Z0-9.\-_]{1,255}$"

正确生成存储桶名称,但aws s3 mb ${bucket_name}失败。如果我只运行aws s3 mb s3://mybucket-z4nnli2k,那么就会创建存储桶,因此我认为aws s3 mb ${bucket_name}不是将bucket_name的值传递给aws s3 mb命令的正确方法。 / p>

它必须是显而易见的东西,但我对shell脚本的经验几乎没有,并且无法弄明白。

如何将bucket_name的值传递给aws s3 mb命令?

1 个答案:

答案 0 :(得分:0)

感谢上面的评论,这就是我的工作:

#!/bin/bash
random_id=$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 8 | head -n 1)
bucket_name=s3://mybucket-$random_id
echo Bucket name: ${bucket_name}
aws s3 mb "${bucket_name}"

我还必须在脚本上运行dos2unix,显然有不好的换行符。