2011-10-12 21 views

Respuesta

5

Por ejemplo:

set s = "one,two,three" 
set words = `echo $s:q | sed 's/,/ /g'` 
foreach word ($words:q) 
    echo $word:q 
end 

Pero considere si CSH es la herramienta adecuada para cualquier trabajo que estás haciendo:

http://www.bmsc.washington.edu/people/merritt/text/cshbad.txt

+0

Gracias. ¿Qué significa: q significa aquí? – zzhang

+0

Cita la variable; '$ s: q' es similar a' "$ s" '. No es necesario para este ejemplo, pero podría ser en otros casos (por ejemplo, si tiene espacios en blanco en los datos). –

7

Una solución más simple que el actual presentada implica el uso del modificador de sustitución incorporado - no hay necesidad o razón para usar de forma inútil un bucle o sustitución de comando externo en este caso:

set list = one,two,three 
set split = ($list:as/,/ /) 

echo $split[2] # returns two 

() crea una lista, el: s es el modificador de sustitución y: como se repite la sustitución tantas veces como sea necesario.

Además, t/csh no requiere cotizaciones de cadenas desnudas, ni variables que no requieren una evaluación forzada.

1
set list = one,two,three 
foreach i ($list:as/,/ /) 
    echo $i 
end 
Cuestiones relacionadas