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?

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

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'"
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.