2016-08-05 7 views
0

Ich habe diesen BefehlBash Zitate sind heikel

aws --profile whatever ec2 describe-instances 

Die kurze Geschichte ist, dass ich keine andere Wahl, diese in diesem Befehl ‚--profile‘ Schnitt zu haben, aber ich brauche, um diese Funktion nutzen zu können/bug mit Anführungszeichen:

aws --profile "" ec2 describe-instances 

aber die Anführungszeichen muss auch eine Umgebungsvariable, wie so

aws --profile $AWS_PROFILE ec2 describe-instances 

sein, aber Ich brauche diese Variable, um den genau gleichen Weg wie die darüber liegende Linie zu lösen. Ich habe versucht,

AWS_PROFILE='""' 

und

AWS_PROFILE= 

und

AWS_PROFILE="" 

Und es löst nicht die gleiche Weise. Kann ich irgendetwas tun?

+0

BashFAQ 50 # - http://mywiki.wooledge.org/BashFAQ/050 - ist dein Freund. –

Antwort

4

Alle in die Variable eingegebenen Anführungszeichen sind Literal. In Ihrem gewünschten Befehl aws --profile "" ec2 describe-instances sind die Anführungszeichen syntaktisch: Das heißt, sie sind Shell-Syntax beschreibt, wie die Shell ein literales Array von C-Strings erstellen wird, um die execv syscall (und wie einer von diese Zeichenfolgen müssen leer sein); Die Anführungszeichen werden nicht tatsächlich an den Befehl aws übergeben.

So:

AWS_PROFILE= 
aws --profile "$AWS_PROFILE" ec2 describe-instances 

... verhalten sich identisch zu

aws --profile "" ec2 describe-instances 
+0

Das funktioniert leider nicht. – techgnosis

+0

Vergleichen Sie das Verhalten der beiden Befehle mit 'set -x' (um alles zu protokollieren, was die Shell stderr ausführt) vor ihnen. –

+0

Woops tut mir leid für die markige Antwort. Enter verhält sich nicht wie erwartet. Ich probiere die 'set -x' Sache jetzt aus – techgnosis