ninjalj tenía la idea correcta, pero el uso de comillas era extraño , en parte porque lo que el OP está pidiendo no es realmente el mejor formato de salida para muchas tareas de shell. En realidad, no puedo imaginar lo que la tarea prevista es, pero:
function quote_args {
for i ; do
echo \""$i"\"
done
}
pone a sus argumentos citado uno por línea, que es generalmente la mejor manera de alimentar a otros programas. Lo que se obtiene de salida en una forma que no pidió:
$ quote_args this is\ a "test really"
"this"
"is a"
"test really"
pero se puede convertir fácilmente y esto es el idioma que más invocaciones de concha preferirían:
$ echo `quote_args this is\ a "test really"`
"this" "is a" "test really"
pero a menos que sea pasando por otro pase eval
, las cotizaciones adicionales probablemente arruinarán las cosas. Es decir, ls "is a file"
enumerará el archivo is a file
mientras
$ ls `quote_args is\ a\ file`
a tratar de enumerar "is
, a
y file"
la que es probable que no desee.
¿Qué estás tratando de lograr?¿La salida de 'foo' se usa como entrada a algo o solo quieres el texto sin formato? – msw
Se supone que debe usarse como entrada para otro comando (correo en este caso). – rui
@rubim: entonces creo que lo estás haciendo mucho más difícil de lo necesario. 'mail" $ @ "' daría los resultados sin el paso de des-analizar/re-analizar. Si '" $ @ "' no está en el estado correcto, muestra lo que tienes. – msw