私はAmazonのCLIを使って静的コンテンツをs3バケットに配布するためにmakefileを使用しています。変数を入れてターゲット先を選択したいので、別のmake動詞で同じスクリプトを繰り返す必要はありません。メイクファイル内の上位変数
私はうまくいくように思えますが、実行時に端末から大文字小文字を区別しないようにしたいと思います。ここで私が持っているものです。
S3_NAME_DEV = com-mydomain-application-dev
S3_NAME_LIVE = com-mydomain-application
deploy:
# e.g. make deploy t=LIVE
aws s3 sync dist/ s3://$(S3_NAME_${t})
私は(bashの4でサポートされており、私が使用している)2つのキャレット$(S3_NAME_${t^^})
を追加しようとしたが動作しません:/。 $ make deploy t=live
(変数が消えてしまう)の出力は次のとおりです。
$ make deploy t=live
# e.g. make deploy t=LIVE
aws s3 sync dist/ s3://
私はAWSコマンドは(AWS CLIを知らないようにすると、あなたをオフにスローされません)のように見えるかもしれないものを含めるように役に立つかもしれないと思いました。
$ t=live
$ echo ${t^^}
LIVE
任意の助けをいただければ幸いです:私はこれを正常に行うことができますからmake
を呼び出すシェルで
aws s3 sync dist/ s3://com-mydomain-application
ボーナスポイント:デフォルト設定値
UPDATE:
は、だから私は仮定のようにそれを実行bashのを継承しませんします。私が@echo "my version is: $$BASH_VERSION"
をmakeファイルに入れたら、バージョン3.2(OS Xのデフォルト)が得られます。これを修正すれば、問題は解決します。
を。私は投稿を編集しました。 – freebie
probsはありません、あなたはすべてのキャップを与える場合は動作しますか? – Sundeep
@Sundeep一度 '^^'をインクルードすると、 't = live'または' t = LIVE'のどちらかで空の値が与えられます。 '^^'を削除すると、 '$ make deploy t = LIVE'が再び動作します。 – freebie