Passer des arguments avec des guillemets et des guillemets doubles au script bash


11

En ce moment, j'ai:

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

Mais quand j'appelle mon script comme:

# script.sh asd "asd" 'asd'

mes arguments sont passés comme: asd asd asd

et j'obtiens une sortie:

eval stuff 'asd asd asd'\015

Sauf un: asd "asd" 'asd'

Comment puis-je changer mon script pour passer la ligne d'arguments entière avec toutes les citations?

Réponses:


7

Votre shell ne transmet pas les guillemets au script. Si vous voulez passer des guillemets, échappez-les avec une barre oblique inverse:

# ./script.sh asd \"asd\" \'asd\'

1
Ce n'est pas ce que je veux, mais de toute façon il n'y a pas d'autre solution (passé toute la nuit à chercher).
Arthur Halma

quelle est la solution
Jason

4
sh -c "screen -x 'ScreenName' -X eval 'stuff \"$@\"\015'"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.