2016-09-15 16 views
0

こんにちは、シェルスクリプトの世界に新しい、いくつかの問題に実行しています。私は2つのAWS S3バケットを呼び出し、アップロードされた最新のファイルをリストするbashスクリプトを書いています。 'long run'では、これらの2つのファイルをダウンロードし、RDS PostgreSQLデータベース内の既存の2つのテーブルにCLIをコピーする必要があります。BashスクリプトでS3バケット最新ファイルを表示

#!/bin/bash 


printf "Looking up newest files added...\n"; 

AUTO= $(aws s3 ls bucketx --recursive | sort | tail -n 1| awk '{print $4}'); 
IMMO= $(aws s3 ls buckety --recursive | sort | tail -n 1 | awk '{print $4}'); 

echo AUTO; 
echo IMMO; 

問題であり、これは私がAWSは、端末に直接コマンドを実行すると、私は、取得しないもので、うまく行くとそれが必要な方法を動作します。 はこれまでのところ、これは私が持っているものです。しかし、スクリプト内で次のエラーが発生します。

Looking up newest files added... 
./shellTest.sh: line 6: bucketx/14.9.2016.csv: No such file or directory 
./shellTest.sh: line 7: buckety/14.9.2016.csv: No such file or directory 

私が間違っていることを誰かに教えてもらえますか?それは論理的な問題なのか、構文的な問題なのか?私は「エコー」コマンドを期待していた 何をAUTOにしたいことは、最新のキーの値

乾杯

答えて

2

..ですちょうど変数xとyの内容をプリントアウト、代わりに何も印刷されませんあなたが引用符を省略した場合、システムは参照を見つけるためにしようとすると、ファイルを文句を言うでしょう - あなたは(キーの文字列値)文字列に値を保持します

AUTO="$(aws s3 ls bucketx --recursive | sort | tail -n 1| awk '{print $4}')" 
IMMO="$(aws s3 ls buckety --recursive | sort | tail -n 1 | awk '{print $4}')" 
ので

AUTOIMMOを持っている必要がありますローカルに存在しません

0あなたはその後、

echo $AUTO 
echo $IMMO 

を持っている必要があります値を表示するに

の下にこの1つは

$ AUTO= $(aws s3 ls <bucket> --recursive | sort | tail -n 1| awk '{print $4}'); 
-bash: database/instantclient-sdk-linux.x64-11.2.0.4.0.zip: No such file or directory 

動作しない表示されますが、この1は大丈夫

$ AUTO="$(aws s3 ls <bucket> --recursive | sort | tail -n 1| awk '{print $4}')" 
$ echo $AUTO 
database/instantclient-sdk-linux.x64-11.2.0.4.0.zip 
+0

ハム..ですこれは私がsaを持っている間に私が(引用符を使って)変更を行うときにローカルで私のために働くので変です私があなたのコードを使用しないで引用符を使用していないときに私のエラーが報告されました –

+0

スクリプトでセミコロンも削除する必要があります、私のメッセージを修正しました –

+0

bashのことですか?私はGNU bashバージョン4.2.46(1)-release(x86_64-redhat-linux-gnu)を実行していますが、セミコロンはまだ削除されていますが、エラーはそのまま続きます。 –

関連する問題