Pasar argumentos con comillas y comillas dobles a bash script

11

En este momento tengo:

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

Pero cuando llamo a mi script como:

# script.sh asd "asd" 'asd'

mis argumentos pasaron como: asd asd asd

y obtengo salida:

eval stuff 'asd asd asd'\015

I excepto a: asd "asd" 'asd'

¿Cómo puedo cambiar mi script para pasar toda la línea de argumentos con todas las citas?

Arthur Halma
fuente

Respuestas:

7

Su shell no está pasando las citas al script. Si quieres pasar comillas, escapa de ellas con una barra invertida:

# ./script.sh asd \"asd\" \'asd\'
teppic
fuente
1
No es lo que quiero, pero de todos modos no hay otras soluciones (pasé toda la noche buscando).
Arthur Halma
¿Cuál es la solución
Jason
4
sh -c "screen -x 'ScreenName' -X eval 'stuff \"$@\"\015'"
Derek
fuente