如何將變量的值傳遞給bash腳本中的命令?將變量的值傳遞給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
命令的正確方法。
它必須是明顯的東西,但我幾乎沒有shell腳本的經驗,並且無法弄清楚。
如何將bucket_name
的值傳遞給aws s3 mb
命令?
確定存儲桶名稱是否正確?你的包含一個':',它表示它必須匹配的正則表達式不包含冒號或正斜槓。除此之外,你應該幾乎總是引用你的變量 –
這個[GitHub問題](https://github.com/boto/botocore/issues/680)可能是有用的 – Inian
你有額外的CR,LF和一個空格存儲桶名稱。 –