シェルスクリプトの新機能。 RHEL 6.9のLinuxサーバーでシェルスクリプトを使用してaws cliを使用してファイル名に空白を含むファイルをAWS S3にアップロードしようとしました。AWS CLI S3 cpシェルスクリプトで引用符付きのソースとターゲットを認識しない
#!/bin/bash
profile=" --profile XXXXXXX"
sourcefile=" '/home/my_login/data/batch4/Test File (1).zip'"
targetobject=" 's3://my-bucket/TestFolder/batch4/Test File (1).zip'"
service=" s3"
action=" cp"
encrypt=" --sse"
func="aws"
awsstring=$func$profile$service$action$sourcefile$targetobject$encrypt
echo $awsstring
$awsstring
私は私が手を実行します:私はここで問題と私のスクリプトの簡単なバージョンがあり、単一および二重引用符を試してみましたし、http://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html
ようにAWS CLIのリンクを読んでてきた
$ ./s3copy.sh
aws --profile XXXXXXX s3 cp '/home/my_login/data/batch4/Test File (1).zip' 's3://my-bucket/TestFolder/batch4/Test File (1).zip' --sse
Unknown options: (1).zip','s3://my-bucket/TestFolder/batch4/Test,File,(1).zip'
私は、コマンドラインからの$ awsstring値を実行すると、それが動作:
$ aws --profile XXXXXXX s3 cp '/home/my_login/data/batch4/Test File (1).zip' 's3://my-bucket/TestFolder/batch4/Test File (1).zip' --sse
upload: data/batch4/Test File (1).zip to s3://my-bucket/TestFolder/batch4/Test File (1).zip
aws cliはシェルスクリプトの引用符を認識していないようです。私はスクリプト内のファイル名を引用する必要があります。なぜなら、その中に空白があるからです。
質問:文字列はコマンドラインから正しく実行されますが、シェルスクリプト内から正しく実行されないのはなぜですか?
あなたの "評価"はそれを解決しました - ありがとう!ええ - 私の必要条件は、既存のファイル名を空白で使用することです。それがどうなるか見る – BilboC