Wie behalte ich doppelte Anführungszeichen in $ @ in einem Shell-Skript?

Sagen wir, ich habe ein wirklich einfaches Shell-Skript 'foo':

  #!/bin/sh
  echo $@

Wenn ich es so aufrufe:

  foo 1 2 3

Es druckt glücklich:

  1 2 3

Nehmen wir jedoch an, eines meiner Argumente ist in doppelte Anführungszeichen eingeschlossen und enthält Leerzeichen:

  foo 1 "this arg has whitespace" 3

foo druckt glücklich:

  1 this arg has whitespace 3

Die doppelten Anführungszeichen wurden entfernt! Ich weiß, dass Shell meint, es würde mir einen Gefallen tun, aber ... ich würde gerne die ursprüngliche Version der Argumente herausfinden, die von Shells Interpretation nicht gestört wird. Gibt es eine Möglichkeit dazu?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage