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?

Arthur Halma
la source

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\'
teppic
la source
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'"
Derek
la source