Passando argomenti con virgolette e virgolette doppie allo script bash


11

In questo momento ho:

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

Ma quando chiamo la mia sceneggiatura come:

# script.sh asd "asd" 'asd'

i miei argomenti sono passati come: asd asd asd

e ottengo l'output:

eval stuff 'asd asd asd'\015

I tranne a: asd "asd" 'asd'

Come posso cambiare il mio script per passare l'intera riga degli argomenti con tutte le virgolette?

Risposte:


7

La tua shell non sta trasmettendo le virgolette allo script. Se vuoi passare le virgolette, sfuggiscile con una barra rovesciata:

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

1
Non è quello che voglio, ma comunque non ci sono altre soluzioni (ho passato tutta la notte a cercare).
Arthur Halma,

qual è la soluzione
Jason,

4
sh -c "screen -x 'ScreenName' -X eval 'stuff \"$@\"\015'"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.