Übergeben von Argumenten mit Anführungszeichen und doppelten Anführungszeichen an das Bash-Skript

11

In diesem Moment habe ich:

#!/bin/bash
screen -p 'ScreenName' -x eval 'stuff '"'"$@"'"'\015'
echo eval 'stuff '"'"$@"'"'\015'

Aber wenn ich mein Skript aufrufe als:

# script.sh asd "asd" 'asd'

Meine Argumente lauteten wie folgt : asd asd asd

und ich bekomme Ausgabe:

eval stuff 'asd asd asd'\015

Ich außer a: asd "asd" 'asd'

Wie kann ich mein Skript so ändern, dass eine ganze Argumentzeile mit allen Anführungszeichen übergeben wird?

Arthur Halma
quelle

Antworten:

7

Ihre Shell leitet die Anführungszeichen nicht an das Skript weiter. Wenn Sie Anführungszeichen übergeben möchten, schließen Sie sie mit einem Backslash:

# ./script.sh asd \"asd\" \'asd\'
teppic
quelle
1
Es ist nicht das, was ich will, aber es gibt sowieso keine anderen Lösungen (die ganze Nacht damit verbracht zu suchen).
Arthur Halma
Was ist die Lösung
Jason
4
sh -c "screen -x 'ScreenName' -X eval 'stuff \"$@\"\015'"
Derek
quelle