Ü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?

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\'

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'"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.