Wie verwende ich shell-Skript, um zu überprüfen, ob ein Eimer vorhanden ist?
Habe ich aws
cli installiert. Ich bin mir nur nicht sicher, wie dies in shell-Skript.
wenn ich den Befehl ausführen aws s3 ls s3://bucket
es würde mir so etwas
Einen client-Fehler (NoSuchBucket) Fehler beim aufrufen der ListObjects Betrieb: Die angegebene Eimer nicht vorhanden
Bedeutet das, dass der Eimer existiert nicht. So möchte ich ausführen, dass aus dem shell-Skript und überprüfen Sie, ob grep
findet. Aber mein Befehl nicht funktioniert.
if [ $(aws s3 ls "s3://$S3_BUCKET" | grep 'NoSuchBucket' &> /dev/null) == 0 ]
then
echo "$S3_BUCKET doesn\'t exist please check again"
exit
fi
Er gab mir nur dieses
backup.sh: 20: [: 0: unexpected operator
Aktualisiert
Änderte ich das Skript zu
echo "S3_BUCKET=$S3_BUCKET"
if aws s3 ls "s3://$S3_BUCKET" | grep -q 'AllAccessDisabled'
then
echo "$S3_BUCKET doesn\'t exist please check again"
exit
fi
- Und das ist die Ausgabe, die ich bekam
A client error (AllAccessDisabled) occurred when calling the ListObjects operation: All access to this object has been disabled
Also der text enthält AllAccessDisabled
aber ich habe noch nicht die echo
die nächste Zeile.
InformationsquelleAutor toy | 2015-06-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den code, die Sie aufgelistet würde nicht gegeben haben, dass sich Fehler.
Wenn Sie hatte das Drehbuch geschrieben, ohne den Raum zwischen den führenden
[
und die$(
hätte.Auch grep ist nicht zu Ausgabe
0
in diesem Fall so, der test ist nicht zur Arbeit gehen, wie Sie wollen.Wenn Sie möchten, um zu testen, ob
grep
gefunden, was möchtest du dann verwenden Sie die-q
argumentgrep
wie diese:Dass die Fehler-Ausgabe. Das wird wahrscheinlich standard-Fehler und standard-Ausgabe. Sie brauchen umgeleitet. Finden Sie in den aktualisierten code.
InformationsquelleAutor Etan Reisner
Den s3api Kopf-Eimer ist direkter und nicht den Aufwand der Aufnahme in die Liste ein Eimer mit vielen Dateien.
http://docs.aws.amazon.com/cli/latest/reference/s3api/head-bucket.html
Nein sollte es nicht, weil es nicht funktioniert in dem Fall, dass der Eimer ist im Besitz eines anderen Benutzers: eingefügt.co/7dae7402
InformationsquelleAutor John Milton
Hier ist, wie ich es gemacht habe, die andere Antwort wird sagen, es ist ein Eimer, wenn es ein AWS-Fehler, die nicht enthalten "NoSuchBucket' wie token Ablauf
InformationsquelleAutor danelips
dieser könnte mich einfachste Ansatz
InformationsquelleAutor vinay
Den Weg empfohlen, der von aws ist
aws s3api head-bucket --bucket $S3_BUCKET
Sehen https://docs.aws.amazon.com/cli/latest/reference/s3api/head-bucket.html
InformationsquelleAutor Le farfadet